Как сделать discord.py бот отправляет сообщения в произвольное время

#python #discord #discord.py #bots

Вопрос:

Я пытаюсь заставить своего бота discord отправлять сообщение на канал в произвольное время вот мой код до сих пор:

 @client.event async def on_message(message):   if (random.randint(0,500) == 42) and (message.author != client.user):  await message.channel.send("bruh")    elif (random.randint(0,500) == 69) and (message.author != client.user):  await message.channel.send("good plan")   elif (random.randint(0,500) == 99) and (message.author != client.user):  await message.channel.send("awwww hellll nahhhhhhh")   elif (random.randint(0,500) == 76) and (message.author != client.user):  await message.channel.send("I think we should see other people...")   elif (random.randint(0,500) == 25) and (message.author != client.user):  await message.channel.send("no.")    elif (random.randint(0,500) == 56) and (message.author != client.user):  await message.channel.send("bad idea")    else:  return  

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

Ответ №1:

если у вас есть событие on_message, вы должны добавить await client.process_commands(message) его в конце события, как это:

 @client.event async def on_message(message):   if (random.randint(0,500) == 42) and (message.author != client.user):  await message.channel.send("bruh")    elif (random.randint(0,500) == 69) and (message.author != client.user):  await message.channel.send("good plan")   elif (random.randint(0,500) == 99) and (message.author != client.user):  await message.channel.send("awwww hellll nahhhhhhh")   elif (random.randint(0,500) == 76) and (message.author != client.user):  await message.channel.send("I think we should see other people...")   elif (random.randint(0,500) == 25) and (message.author != client.user):  await message.channel.send("no.")    elif (random.randint(0,500) == 56) and (message.author != client.user):  await message.channel.send("bad idea")    else:  return   await client.process_commands(message)  

или вы могли бы просто использовать @client.listen() декоратора, как это:

 @client.listen() async def on_message(message):   if (random.randint(0,500) == 42) and (message.author != client.user):  await message.channel.send("bruh")    elif (random.randint(0,500) == 69) and (message.author != client.user):  await message.channel.send("good plan")   elif (random.randint(0,500) == 99) and (message.author != client.user):  await message.channel.send("awwww hellll nahhhhhhh")   elif (random.randint(0,500) == 76) and (message.author != client.user):  await message.channel.send("I think we should see other people...")   elif (random.randint(0,500) == 25) and (message.author != client.user):  await message.channel.send("no.")    elif (random.randint(0,500) == 56) and (message.author != client.user):  await message.channel.send("bad idea")    else:  return  

если вы используете событие listen (), вам не нужно обрабатывать команды