如果代码正确,我想制作一个机器人,机器人邀请我访问特定服务器。 但它有错误。
这是我的代码:
@client.command()
async def invite(ctx, *, code):
if code == "12320001":
guild = "851841115896152084"
invite = await ctx.guild.create_invite(max_uses=1)
await ctx.send(f"Here's your invite : {invite}")
else:
await ctx.send(f"Code is wrong!")
和错误:
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'NoneType' object has no attribute 'create_invite'
答案 0 :(得分:1)
ctx.guild
是 None
,这就是您收到此异常的原因。
您可以在调用 ctx.guild
函数时将 ctx
作为参数传递之前检查 invite
的值。
答案 1 :(得分:0)
正如错误所暗示的那样,ctx.guild
是 None
。这通常发生在 DM 中而不是服务器中调用命令时,因为 DM 中显然没有服务器。
根据您从未使用过的 guild
变量这一事实判断,我认为您是在尝试邀请人们加入那个公会。
# Make sure the id is an int, NOT a string
guild = client.get_guild(85184111589615208)
# Invite users to the guild with the above id instead
invite = await guild.create_invite(max_uses=1)
答案 2 :(得分:0)
您需要一个 Channel
对象来创建邀请,因为 Guild
类没有 create_invite()
方法。您可以使用下面给出的代码。注意服务器至少要有一个频道。
@client.command()
async def invite(ctx, code):
if code == "12320001":
guild = client.get_guild(851841115896152084)
invite = await guild.channels[0].create_invite(max_uses = 1)
await ctx.send(f"Here's your invite: {invite}")
else:
await ctx.send("Invalid code!")