从不和谐消息中提取不和谐用户ID

时间:2018-11-12 03:50:36

标签: python-3.x discord discord.py

我正在开发一个python机器人,我需要做的一件事是让该机器人在不和谐的频道中查看某人是否@@另一个人(即,我输入类似“!callout @randomuser”之类的东西)。如果检测到此错误,我想获取@用户的用户ID(在本例中为@randomuser的用户ID)

我知道这可能是一个愚蠢的问题,但无法在其他地方找到答案。谢谢!

2 个答案:

答案 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)