Извлечь ID пользователя Discord из сообщения Discord - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над питоном-ботом, и мне нужно, чтобы бот увидел, что кто-то @ другой человек (то есть я набираю что-то вроде "! Callout @randomuser") в канале диссонанса. Если это обнаруживается, я хочу получить идентификатор пользователя @ 'd (в данном случае идентификатор пользователя @randomuser)

Я знаю, что это, вероятно, глупый вопрос, но не смог найти ответ в другом месте. Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Самый простой способ - использовать упоминания . Это создает список пользователей для всех пользователей, которые были упомянуты (@user) в сообщении. Преимущество этого в том, что он легко обрабатывает несколько упоминаний. Это работает в перезаписывающей и асинхронной версии discord.py

@commands.command()
async def test(ctx):
    users = ctx.message.mentions
    await ctx.send(users[0].id)
0 голосов
/ 12 ноября 2018

Более простой способ - использовать преобразователи , которые поставляются с расширением discord.ext.commands. Это может дать вам объект 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")
...