Как подождать несколько секунд только для пользователя discord bot python

#python #python-3.x #discord #discord.py

#python #python-3.x #Discord #discord.py

Вопрос:

Хорошо, я создаю валютного бота на python. Я довольно свободно владею python (просто не так часто использовал сопрограмму)

Чего я хочу добиться, так это того, что бот не отвечает пользователю, если пользователь отправил сообщение за предыдущие 20 секунд. time.sleep здесь не будет работать, поскольку он блокирует весь код (другой пользователь должен получить ответ). Я просто не могу понять, как это сделать.

 async def on_message(message):
    if message.author==client.user:
        return
    await make_bank(message.author.id)
    if message.content=="A":
        await message.channel.send("Done! Wait 20 secs.")
 

Комментарии:

1. Пожалуйста, добавьте свой код, также вместо time.sleep него вы можете использовать asyncio.sleep

2. У меня это было в моем коде. Позвольте мне добавить это

Ответ №1:

Вы можете использовать wait_for функцию с таймаутом kwarg

 if message.content == "A":
    await message.channel.send("Done! Wait 20 secs.")

    def check(m):
        return m.author == message.author

    try:
        await client.wait_for("message", check=check, timeout=20.0)
        # Code here will be executed if the user sends a message within those 20 seconds
        await message.channel.send("Uh oh, you were supposed to wait for 20 seconds")
    except asyncio.TimeoutError:
        # User didn't send a message in 20 seconds
        await message.channel.send("Thanks for waiting!")
 

Ссылка:

Комментарии:

1. Он продолжает посылать «О, ты должен был подождать 20 секунд»

2. Я попробовал код, и он работает безупречно. вы делаете что-то не так

3. Я читал об этом вчера и внес некоторые изменения, но теперь есть 1 проблема. Он не отвечает на первое сообщение и ждет 20 секунд, а затем отвечает

4. Я не совсем понимаю, в чем здесь проблема

5. Я в принципе хочу создать систему прокачки, подобную mee6 (XP добавляется каждую минуту, если пользователь отправляет сообщения) Как я могу этого добиться?