Нужно сделать голосование по реакциям и вывод победителя (discord python)

Есть сообщение, которое отправляет бот. На сообщение добавляется 4 реакции. После 10 секунд голосования выводится сообщение с победителем.

    embed = discord.Embed(title ="Выбор карты для игры", description = "Вот список карт, которые можно выбрать:\n1.?Sandstone\n2.⛲️Province\n3.?Rust\n4.☢️zone 9", colour = discord.Colour.from_rgb(0, 204, 102))
    check = await ctx.send(embed=embed)
    await check.add_reaction('\U0001F3DC')
    await check.add_reaction('\U000026F2')
    await check.add_reaction('\U0001F5FF')
    await check.add_reaction('\U00002622')
    time.sleep(10)
    embed = discord.Embed(title =f"Голосование #{game} окончено!", description ='Играем карту, на которой больше реакций.', colour = discord.Colour.from_rgb(0, 204, 102))
    await ctx.send(embed=embed)

Не знаю как сделать подсчёт реакций и сравнение их с выводом.

UPD: Дополнил код, в консоль ничего не выводится.

from discord.ext import commands
from discord.utils import get
from asyncio import sleep

bot = commands.Bot(command_prefix = '=') 
TOKEN = #тут мой токен

@bot.command(pass_context =True)
async def test(ctx):
  embed = discord.Embed(title ="Выбор карты для игры", description = "Вот список карт, которые можно выбрать:\n1.?Sandstone\n2.⛲️Province\n3.?Rust\n4.☢️zone 9", colour = discord.Colour.from_rgb(0, 204, 102))
  msg = await ctx.send(embed=embed) #текст с голосованием
  await msg.add_reaction('\U0001F3DC')
  await msg.add_reaction('\U000026F2')
  await msg.add_reaction('\U0001F5FF')
  await msg.add_reaction('\U00002622')#добавляем реакции для голосования
  await sleep(10)#даем время на голосование
  for reaction in msg.reactions:
    print(reaction, reaction.count)#Этот код мне дали в ответах и он ничего не выводит
  embed = discord.Embed(title =f"Голосование окончено!", description ='Играем карту, на которой больше реакций.', colour = discord.Colour.from_rgb(0, 204, 102))
  await ctx.send(embed=embed)#тут нужно сделать подсчёт количество нажатых реакций на каждой реакции. Далее сравниваем и выводим победителя
bot.run(TOKEN)
‘’’

Ответы (1 шт):

Автор решения: denisnumb

Получить список реакций сообщения можно из атрибута reactions.

Получить количество поставленных реакций, можно из полученной до этого реакции, из атрибута count.

Затем, по прошествии времени, мы можем в цикле для списка реакций, выводить саму реакцию, а также ее количество

Перезапишем сообщение:

msg = await msg.channel.fetch_message(msg.id)

Считаем реакции:

for reaction in check.reactions:
    print(reaction, reaction.count)

Затем, имея доступ к количеству каждой реакции, думаю, вы разберетесь, как их сравнить и вывести наибольшую.


Пример:

введите сюда описание изображения

Результат:

введите сюда описание изображения


Полный код:

from discord.ext import commands
from discord.utils import get
from asyncio import sleep
import discord

bot = commands.Bot(command_prefix = '=') 

@bot.command()
async def test(ctx):
    embed = discord.Embed(title ="Выбор карты для игры", description = "Вот список карт, которые можно выбрать:\n1.?Sandstone\n2.⛲️Province\n3.?Rust\n4.☢️zone 9", colour = discord.Colour.from_rgb(0, 204, 102))
    msg = await ctx.send(embed=embed) #текст с голосованием
    await msg.add_reaction('\U0001F3DC')
    await msg.add_reaction('\U000026F2')
    await msg.add_reaction('\U0001F5FF')
    await msg.add_reaction('\U00002622')#добавляем реакции для голосования
    await sleep(10)#даем время на голосование

    msg = await msg.channel.fetch_message(msg.id)

    for reaction in msg.reactions:
        print(reaction, reaction.count)#Этот код мне дали в ответах и он ничего не выводит

    embed = discord.Embed(title =f"Голосование окончено!", description ='Играем карту, на которой больше реакций.', colour = discord.Colour.from_rgb(0, 204, 102))
    await ctx.send(embed=embed)#тут нужно сделать подсчёт количество нажатых реакций на каждой реакции. Далее сравниваем и выводим победителя

bot.run(TOKEN)
→ Ссылка