Я хочу добавить своему боту команду опроса, которая принимает параметры opt1
и opt2
, добавить две реакции для встраивания, и у пользователей есть expir
время проголосовать, а затем он отправит сообщение, у которого из вариантов было больше голосов, но у меня ошибка: RuntimeError: coroutine 'poll.<locals>.whowin' was never awaited
. Не знаю как исправить! Я пробовал некоторые решения, но они не работали. Вот мой код:
@commands.cooldown(1, 45, commands.BucketType.guild)
async def poll(ctx, title, opt1, opt2, expir):
try:
expir = float(expir)
if expir > 120:
await ctx.send('Expiration time cannot be greater than 120 seconds.')
return False
except:
await ctx.send('Error while converting `expir` parameter.')
return False
pollEmbed=discord.Embed(
title=title,
description='React with role below:',
colour=discord.Colour.blue()
)
pollEmbed.add_field(name='Option 1', value=opt1)
pollEmbed.add_field(name='Option 2', value=opt2)
thisEmbed = await ctx.send(embed=pollEmbed)
await discord.Message.add_reaction(thisEmbed, emoji='1\U000020e3')
await discord.Message.add_reaction(thisEmbed, emoji='2\U000020e3')
async def whowin():
if len(users1) > len(users2):
await ctx.send('People most voted for: {0}'.format(opt1))
return True
elif len(users1) < len(users2):
await ctx.send('People most voted for: {0}'.format(opt2))
return True
else:
await ctx.send('There\'s a tie!')
return True
pollTimer = Timer(expir, whowin)
pollTimer.start()
@bot.event
async def on_reaction_add(reaction, user):
if discord.Reaction.message == thisEmbed:
if discord.Reaction.emoji == '1\U000020e3':
users1.append(user)
else:
users2.append(user)
Хотя я знал ответ на вторую ошибку (NameError): я пытался сделать thisEmbed
глобальным. На данный момент это исправлено, но все еще есть RuntimeError
.