сообщение discord.py, отправляемое несколько раз, увеличивается на 1 каждый раз - PullRequest
0 голосов
/ 11 ноября 2018

Действительно трудно произнести слово в заголовке. По сути, у меня есть функция с именем #start, которая при вызове в определенное время отправит сообщение о несогласии с просьбой пересмотреть до (снова) определенного времени. Но когда я возвращаюсь к разногласиям, оказывается, что сообщение было отправлено дважды. Затем я пытаюсь выполнить команду #start, и она отправляет одно и то же сообщение 3 раза. Если я снова наберу #start, он появится 4 раза. Это мой код:

if hour == 14:
   await bot.send_message(message.channel, "<@258621320898543616> Why don't you try some science revision now?")
   science = random.choice(sciences) 
   asyncio.sleep(0.5)
   await bot.send_message(message.channel, "<@258621320898543616> lemme see, how about " +science+"? Look over some of that")
   asyncio.sleep(1)
   await bot.send_message(message.channel, "you can take a break at 3:00")
while hour >= 14 and hour < 15:
   msg = await bot.wait_for_message(timeout=3, author=message.author)
   if msg:
      await bot.delete_message(msg)
   hour = int(time.strftime("%H"))

После 4-го раза, когда я набираю #start, появляется сообщение об ошибке:

discord.errors.NotFound: NOT FOUND (status code: 404): Unknown Message

Не уверен, что не так с кодом или как я могу это предотвратить. Помогите пожалуйста?

1 Ответ

0 голосов
/ 11 ноября 2018

Добавьте глобальное значение, указывающее, выполняется ли команда #start.

from discord.ext.commands import Bot

bot = Bot(command_prefix='#')
start_running = False

@bot.event
async def on_message(message):
    global start_running
    if message.content.startswith('#start'):
        if not start_running:                
            start_running = True
            # do stuff
            start_running = False

bot.run("token")
...