Как получить идентификатор упомянутого пользователя в боте Python Discord?

Итак, я программировал бота Discord на Python. Но есть проблема. Я знаю, как упомянуть пользователя, отправившего сообщение. Но как мне получить идентификатор пользователя, упомянутого автором в сообщении? Я не мог получить ответа.


person Raebel Christo    schedule 20.01.2018    source источник


Ответы (2)


Вы можете получить пользователей, которые были упомянуты в сообщении, используя message.mentions (async перезаписать)

Оттуда вы можете либо получить идентификатор от объекта Member, либо получить отформатированное упоминание от этих объектов.

message.mentions[0].id
message.mentions[0].mention
person Sam Rockett    schedule 20.01.2018
comment
Так будет ли следующий пример правильным? async def on_message(): if message.content.upper() == "+CALL": await bot.send_message(message.channel, "<%s> and <%s> are called to come" % (message.mentions[0].id,message.mentions[1].id)) - person Raebel Christo; 20.01.2018
comment
Нет. Упоминания в формате <@...>, а не только <...>. Кроме того, вы можете просто использовать member.mention для создания предварительно отформатированного упоминания. "%s" % message.mentions[0].mention. Наконец, возможно, стоит изучить str.format - person Sam Rockett; 20.01.2018

Объекты discord.Message имеют атрибут mentions, который возвращает список discord.Member объектов всех пользователей, упомянутых в содержании сообщения, объекты discord.Member имеют discord.User объекты в качестве родителей, поэтому вы можете получить доступ к discord.User атрибутам, таким как author.id и author.name и т. Д., Просто перебирайте упоминания с помощью

for member in message.mentions:
    # do stuff with member

Вам действительно стоит использовать discord.ext.commands (асинхронная перезапись), потому что создание парсера команд, который работает исключительно в on_message методе событий, - плохая идея, не связанная с питоном.

Что ты, наверное, хочешь

похоже, все, что вам нужно, это иметь доступ к объекту автора сообщения и пользователям, упомянутым в сообщении в качестве параметров, для этого обратитесь к моему ответу здесь. Чтобы получить доступ к автору, вы можете просто сделать это через объект discord.Message с message.author

person mental    schedule 20.01.2018