Как сделать таймер который будет длится 10 секунд и обновлять сообщение, с функцией bot.wait_for (Discord.Py Python)
Хочу чтобы мой бот с функцией bot.wait_for() обновлял свое сообщение Embed в течении 10 секунд, чтобы было видно сколько времени осталось до ответа. Как это сделать?
emb = discord.Embed(
title='Угадайте страну по флагу!',
description=f'Флаг: {flag}\nОсталось времени: {duration} секунд',
color=discord.Colour.green()
)
msg = await ctx.send(embed=emb)
def check(m: discord.Message):
if mode == 'private':
return m.author.id == ctx.author.id and m.channel.id == ctx.channel.id
elif mode == 'public':
return m.channel.id == ctx.channel.id
else:
return m.channel.id == ctx.author.id and m.channel.id == ctx.channel.id
try:
msg = await bot.wait_for('message', check = check, timeout = time)
Тут часть кода и мне надо обновлять Embed-сообщение (переменная emb) примерно 10 секунд, т.е. чтобы он показывал сколько времени осталось до того, как кто-то ответит на сообщение бота.
Ответы (1 шт):
Автор решения: Daniel
→ Ссылка
Могу посоветовать что-то такое
emb = discord.Embed(
title='Угадайте страну по флагу!',
description=f'Флаг: {flag}\nОсталось времени: {duration} секунд',
color=discord.Colour.green()
)
msg = await ctx.send(embed=emb)
def check(m: discord.Message):
if mode == 'private':
return m.author.id == ctx.author.id and m.channel.id == ctx.channel.id
elif mode == 'public':
return m.channel.id == ctx.channel.id
else:
return m.channel.id == ctx.author.id and m.channel.id == ctx.channel.id
async def update_embed():
emb.description = f'Флаг: {flag}\nОсталось времени: {duration} секунд'
await msg.edit(embed=emb)
while duration > 0:
await update_embed()
duration -= 1
time.sleep(1)
try:
msg = await bot.wait_for('message', check = check, timeout = time)