#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 добавляется каждую минуту, если пользователь отправляет сообщения) Как я могу этого добиться?