(discord.py) Заставить бота реагировать на on_message () каждые x секунд - PullRequest
0 голосов
/ 11 июля 2020

Я хочу, чтобы мой бот Discord мог указывать пользователям go спать, когда они поздно ложатся, что я делаю с помощью:

@client.event
async def on_message(message):
    now = datetime.datetime.now()
    now_hour = now.hour                                      #Gets current time in hours.
    if message.author != client.user and now_hour<6:        #Runs if the message is not sent by the bot or if the time is between 00:00 and 06:00
        await message.channel.send('Are you still awake? You ought to go to bed immediately!')
    await client.process_commands(message)                   #If not included, on_message() will override commands

Но в настоящее время он отвечает на каждое сообщение за этот период времени. , что раздражает. Я знаю, что у команд есть кулдауны, но я не смог найти аналогичную вещь для событий. Итак, мой вопрос : есть ли эквивалент перезарядки для событий или другой умный способ сделать это?

Заранее спасибо и извините за ладью ie ошибок, которые я должен сделать.

1 Ответ

0 голосов
/ 11 июля 2020

Да, разумный способ - использовать базу данных для хранения информации о пользователях и последнего отправленного ими сообщения. Затем вы вычисляете время, сохраненное до текущего времени, и, если сохраненное время прошло определенное время, сообщите им go спать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...