ошибка tasks , ошибка с переменной
@tasks.loop(seconds=15,count=99999999999)
async def startgame():
amount = random.randint(5, 35)
num1 = random.randint(1, 10)
num2 = random.randint(1, 10)
operator = random.choice(['+', '-', '*', '/'])
time = datetime.datetime.now() + datetime.timedelta(minutes=15)
cool_time = disnake.utils.format_dt(time, style="R")
embed = disnake.Embed(color=0x00ebed, title=f'Чат игра!')
embed.add_field(name=F'Реши пример и получи {amount} билетиков ! У вас ровно 1 минута!\n',
value=f'{num1} {operator} {num2}=?\n')
embed.add_field(name=f'Решил пример?\n',
value=f'Напиши правильный ответ в чат!\n')
channel = bot.get_channel(1233426674012393583)
await channel.send(embed=embed)
correct_answer = eval(f'{num1}{operator}{num2}')
async def check(message):
return message.author == disnake.Member and message.content()
try:
message = await bot.wait_for('message', check=check, timeout=10.0)
except asyncio.TimeoutError:
embed = disnake.Embed(color=0xff0000, title=f'Чат игра!')
embed.add_field(name=F'Ой!\n',
value=f'Вы не успели ответить на пример!\n' , inline=True)
embed.add_field(name=f'Ожидайте следующей чат-игры!\n',
value=f'Правильный ответ:\n' + str(correct_answer) , inline=True)
embed.add_field(name=f'Следующая игра ровно через:\n',
value=f'{cool_time}\n' , inline=True)
channel = bot.get_channel(1233426674012393583)
await channel.send(embed=embed)
if message.content == str(correct_answer):
member = message.author
await bot.db.create_table()
await bot.db.add_user(member)
await bot.db.update_money(member, amount, 0)
embed = disnake.Embed(color=0x00ff00, title=f'Чат игра!')
embed.add_field(name=f'{member} Ответил правильно!\n',
value=f'Вы правильно ответили на пример!\n' , inline=True)
embed.add_field(name=f'Ваша награда: {amount} билетиков, поздравляем!\n',
value=f'/balance - просмотреть свой баланс.\n' , inline=True)
embed.add_field(name=f'Следующая игра ровно через:\n',
value=f'{cool_time}\n' , inline=True)
channel = bot.get_channel(1233426674012393583)
await channel.send(embed=embed)
else:
embed = disnake.Embed(color=0xff0000, title=f'Чат игра!')
embed.add_field(name=F'Ой!\n',
value=f'Вы ошиблись!\n' , inline=True)
embed.add_field(name=f'Ожидайте следующей чат-игры!\n',
value=f'Правильный ответ:\n' + str(correct_answer) , inline=True)
embed.add_field(name=f'Следующая игра ровно через:\n',
value=f'{cool_time}\n' , inline=True)
channel = bot.get_channel(1233426674012393583)
await channel.send(embed=embed)
ошибка: if message.content == str(correct_answer): UnboundLocalError: local variable 'message' referenced before assignment
Ответы (2 шт):
Автор решения: user580418
→ Ссылка
...
message = ""
try:
message = await bot.wait_for('message', check=check, timeout=10.0)
except asyncio.TimeoutError:
...
Добавите до присвоения значения объявление переменной.
Автор решения: q r t s
→ Ссылка
Просто поместите всё вовнутрь:
try:
message = await bot.wait_for('message', check=check, timeout=10.0)
if message.content == str(correct_answer):
...
else:
...
except asyncio.TimeoutError:
...