我正在开发一个python机器人,我需要做的一件事是让该机器人在不和谐的频道中查看某人是否@@另一个人(即,我输入类似“!callout @randomuser”之类的东西)。如果检测到此错误,我想获取@用户的用户ID(在本例中为@randomuser的用户ID)
我知道这可能是一个愚蠢的问题,但无法在其他地方找到答案。谢谢!
答案 0 :(得分:0)
更简单的方法是使用扩展名discord.ext.commands
附带的converters。这样可以为您提供一个User
对象,该对象具有一个User.id
属性:
from discord.ext.commands import Bot
from discord import User
bot = Bot(command_prefix='!')
@bot.command(pass_context=True)
async def getid(ctx, user: User):
await bot.say("Their ID is {}".format(user.id))
@bot.command(pass_context=True)
async def callout(ctx, user: User):
await bot.say("{}, someone is talking about you".format(user.mention))
bot.run("token")
答案 1 :(得分:0)
最简单的方法是使用mentions。这将为消息中提到的所有用户(@user)生成用户列表。这样做的好处是可以轻松处理多个提及。这适用于discord.py的重写和异步版本
@commands.command()
async def test(ctx):
users = ctx.message.mentions
await ctx.send(users[0].id)