Discord.py |未定义的变量 'user' 错误

Discord.py | Undefined variable 'user' Error

@commands.command()
    async def test(self, ctx, user_id : int):
        test= discord.Embed(title=f'A moderation action has been performed!', description='', color=0x90fd05)
        test.add_field(name='User Affected:', value={user.name}, inline=True)
        test.add_field(name='User ID:', value=f'`{user_id}`', inline=True)
        test.add_field(name='Moderator Name:', value=f'`{ctx.author}`', inline=True)
        test.add_field(name='Moderator ID:', value=f'`{ctx.author.id}`', inline=True)
        test.add_field(name='Action Performed:', value='`UnBan`', inline=True)\
        #test.timestamp = datetime.datetime.utcnow()
        test.set_author(name=f'{ctx.guild}', icon_url=ctx.guild.icon_url)
        test.set_thumbnail(url=user.avatar_url)
        await ctx.channel.send(embed=test)

我不断收到以下行的错误:

test.add_field(name='User ID:', value=f'`{user_id}`', inline=True)

test.set_thumbnail(url=user.avatar_url)

这是为什么呢?我是否需要在第二行添加任何内容?我在 google 上搜索,发现它的使用就像我做的一样,但它不起作用...

您还没有定义 user 变量。为了定义它,您可以使用 guild.get_member(id) 获取 discord.Member 对象。然后你可以使用 user 变量。

@commands.command()
async def test(self, ctx, user_id : int):
    user = ctx.guild.get_member(user_id)
    test= discord.Embed(title=f'A moderation action has been performed!', description='', color=0x90fd05)
    ...

user_iduser 不同,你也没有定义 user,如果你想得到一个 discord.Member 实例,你可以使用MemberConverterGuild.get_member

使用MemberConverter

async def test(self, ctx, user: discord.Member): # This will work with mentions, names, ID's, nicknames..
    print(type(user)) # <class 'discord.member.Member`>
    # ...

使用Guild.get_member

async def test(self, ctx, user_id: int):
    user = ctx.guild.get_member(user_id)
    print(type(user)) # <class 'discord.member.Member`>
    # ...

参考: