我们正在为Discord Server写一个机器人,该机器人应该提到启动特定命令的人。为此,我需要用户的ID,但不知道如何获取它。
@bot.command()
async def name():
author = discord.User.id
await bot.say(str(author))
我们以这种方式进行了尝试,因为文档说,用户的ID在User类中。但是我们唯一得到的是
<member 'id' of 'User' objects>
在我们眼中,我们获得了正确的参数,但无法获取ID本身?我们需要以某种方式进行转换吗?
答案 0 :(得分:2)
要使机器人在异步分支中提及消息的作者,您需要通过调用命令ctx.message
的消息来引用该作者:
@bot.command(pass_context=True)
async def name(ctx):
await bot.say("{} is your name".format(ctx.message.author.mention))
要获取其ID:
@bot.command(pass_context=True)
async def myid(ctx):
await bot.say("{} is your id".format(ctx.message.author.id))
答案 1 :(得分:0)
2020年更新的代码:
@Bot.command()
async def name(ctx):
user = await Bot.fetch_user('<user id>')
await user.send('hey')
答案 2 :(得分:-1)
您需要在函数名称中提供一个参数。每个bot.command需要至少具有一个称为“上下文”的参数。如:
async def name(ctx):
author = ctx.message.author
user_name = author.name