on_message discord py
В моем боте Discord есть 2 события on_message(), первое цензурирует сообщения, другое принимает DM, однако после добавления второго перестало работать первое
Вот код 1-го:
@bot.event
async def on_message(message):
if message.author.bot:
return
else:
for word in filtered_words:
if word in message.content.lower():
author = message.author
dt_now = datetime.datetime.now()
await message.delete()
chid = bot.get_channel(937207414623703080)
await chid.send('User: "' + str(author) + '" | Act: Restricted word | Date/Time: ' + str(dt_now) + '\nUsed word: "' + word + '" | ' + 'In message: "' + message.content + '" ' + '| In channel: "' + message.channel.name + '"')
await bot.process_commands(message)
Код 2-го:
@bot.event
async def on_message(message):
chid = bot.get_channel(939064043740729364)
if message.author.bot:
return
else:
if str(message.channel.type) == 'private':
await chid.send('User: "' + str(message.author) + '" | Act: DMMessage | Wrote: "' + message.content + '" | Date/time: ' + str(dt_now))
await bot.process_commands(message)
Пытался ставить те же await bot.process_commands(message) в разных местах и т.п. Дело заключается именно во втором событии, т.к. если закомментить его, то 1-е начинает работать.
Ломаю над этим голову 3-й день, не знаю что делать, прошу помощи. В гугле нигде не нашел.
Ответы (1 шт):
Обработчик событий on_message() может быть только один, поэтому работает только последний, так как заменяет собой предыдущие.
Чтобы решить проблему, просто объедините логику обработчика в одну функцию.
Например через проверку типа канала, из которого пришло сообщение:
if message.channel.type == discord.ChannelType.private:
# действия обработчика принимающего DM