@DeDabby

Как настроить голосование в боте дискорд?

у меня есть данный код
@bot.command()
async def gkick (ctx, member: discord.Member):
    channel = ctx.channel
    emb = discord.Embed(title=f'Голосование.', description= f'Голосуем за исключение {member.name} ',
                                  colour=discord.Color.purple())
    message = await ctx.send(embed=emb)
    await message.add_reaction('✅')
    await message.add_reaction('❌')
    global message_id # Если используется класс, то необходимо создать в классе переменную
    message_id = message.id # Сохраняем id сообщения для голосования

@bot.command()

async def endvote(ctx):
    channel = ctx.channel
    message = await channel.fetch_message(message_id) # Ищем сообщение
    # Фильтруем реакции, чтобы остались только нужные
    resactions = [reaction for reaction in message.reactions if reaction.emoji in ['✅', '❌']]
    # Превращаем результат голосования в строку (вычитаем 1 из количества, значение по умолчанию)
    result = ''
    for reaction in resactions:
        result += reaction.emoji + ": " + str(reaction.count - 1)
    emb = discord.Embed(title=f'Результат.', description='Итог голосования: ' + str(result),
                                  colour=discord.Color.purple())
    await ctx.send(embed=emb)
    print()


после endvote Итог голосования: ✅: 1❌: 0
Мне надо вычленить цифры 1 и 0 в виде переменных чтобы их сравнить и по итогам он должен сделать команду
пример:
if result1 > result 2:
    await member.kick()
  • Вопрос задан
  • 424 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
1. Оформи код как положено (</>)
2. resactions = [reaction for reaction in message.reactions if reaction.emoji in ['✅', '❌']]

Что тебе мешает адаптировать эту строку, чтобы считать реации отдельно?
А то и проще, используй collections.Counter:
from collections import Counter

counts = Counter(reaction.emoji for reaction in message.reactions)
if counts['✅'] > counts['❌']:
    KABOOM()
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы