Итак, я программировал бота Discord на Python. Но есть проблема. Я знаю, как упомянуть пользователя, отправившего сообщение. Но как мне получить идентификатор пользователя, упомянутого автором в сообщении? Я не мог получить ответа.
Как получить идентификатор упомянутого пользователя в боте Python Discord?
Ответы (2)
Вы можете получить пользователей, которые были упомянуты в сообщении, используя message.mentions
(async перезаписать)
Оттуда вы можете либо получить идентификатор от объекта Member, либо получить отформатированное упоминание от этих объектов.
message.mentions[0].id
message.mentions[0].mention
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
<@...>
, а не только <...>
. Кроме того, вы можете просто использовать 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