Proffs
@Proffs
Недопрограммист

Как узнать всех пользователей которые поставили реакцию на выбранное сообщение в discord.py?

Здравствуйте! Создаю функцию у бота которая собирает участников и переправлчяет из на сервер.

(Код)
@bot.command()
async def start(ctx):
    channel = ctx.message.channel
    mess = await channel.send('Набор в игру')
    ID = mess.id
    r = bot.Reaction
    await asyncio.sleep(10)
    mess = await channel.fetch_message(ID)


Я смотрел документацию, но когда пытаюсь узнать всех пользователей вот так:
mess.Reaction.users() - высвечивает, что Reaction не является атрибутом Message..
Как можно узнать?
  • Вопрос задан
  • 4693 просмотра
Решения вопроса 1
Атрибут который вам нужен называется Message.reactions. discord.Reaction - тип возвращаемых объектов в reactions.

discord.Message.reactions

@bot.command()
async def start(ctx):
    mess = await channel.send('Набор в игру')
    await asyncio.sleep(10)
    mess = await ctx.channel.fetch_message(mess.id)
    if yes_react := discord.utils.get(mess.reactions, emoji=ctx.guild.get_emoji(471483388532742130)):
        async for user in yes_react.users:
            print(str(user))  # выведет всех пользователей поставивших реакцию в консоль
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@UberPool
Python/JS coder
Возможно вариант с коргами тебе не подходит,но все же:
@commands.Cog.listener()
    async def on_raw_reaction_add(self, payload):
        members_list = []
        if payload.message_id == 745708593348739214: 
            if payload.emoji.name == '':   #эмоция которую нужно поставить
                guild = self.bot.get_guild(payload.guild_id)
                member = guild.get_member(payload.user_id)
                members_list.append(f'{member}')
                #и делаешь что-то


Как тебе и сказали ранее, записывай id участников куда-либо и делай что хочешь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы