Discord.py 公会邀请机器人

时间:2021-06-22 09:22:47

标签: python discord.py

如果代码正确,我想制作一个机器人,机器人邀请我访问特定服务器。 但它有错误。

这是我的代码:

@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'

3 个答案:

答案 0 :(得分:1)

ctx.guildNone,这就是您收到此异常的原因。

您可以在调用 ctx.guild 函数时将 ctx 作为参数传递之前检查 invite 的值。

答案 1 :(得分:0)

正如错误所暗示的那样,ctx.guildNone。这通常发生在 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!")