Два @bot.event не работают одновременно.Хотя по отдельности всё работает

Я практикуюсь в программировании на python.Пытаясь создать фильтр для "плохих слов" я столкнулся с проблемой.У меня в коде есть @bot.event,который копирует все сообщения с сервера в другой канал.Так вот,он не работает.Хотя когда я запускаю эти два @bot.event отдельно,они работают отлично.Но вместе они конфликтуют. С чем это может быть связано?

import discord
from discord.ext import commands
TOKEN = 'censored'
badWord = ['bad1', 'bad2','Bad1','Bad2']
bot = commands.Bot(command_prefix='!') 

@bot.event 
async def on_ready(): 
    print(f"Bot App1 is ready") #a message about the bot's readiness, output to the console

@bot.event
async def on_message(message):
     if message.content in badWord:
      pass
      print(f"{message.author}: Bad word is detected")
     else:      
      if message.author == bot.user:
          return
      print(message.author,message.content)
      channel = bot.              get_channel(861546679676567594)
      await channel.send('{}: {}'.format(message.author, message.content)) #the bot reads all messages written on the server and copies them to a special chat

@bot.event
async def on_message(message):
    msg_content = message.content.lower()
    if any(word in msg_content for word in badWord):
        await message.delete()
        await message.channel.send(f"{message.author.mention} Bad word is deleted.")
        print('Bad word is deleted',message.author)

bot.run(TOKEN) 

Ответы (2 шт):

Автор решения: Артём Захаров

Возможно проблема в том, что @bot.event является декоратором и оба ваших декоратора нацелены на один и тот же объект. Работать будет первое вхождение, по типу if elif конструкции. Ещё и функции называются одинаково, что не очень хорошо. Советую их объединить или создать отсылку в конце первой функции ко второй

→ Ссылка
Автор решения: твоя deadline

Когда ты второй раз объявляешь функцию on_message, первая "пропадает", она заменяется новой. Также, существует внутреннее ограничение discord.py, которое не позволяет создавать два ивент листенера. Используйте @bot.listen() вместо @bot.event:

@bot.listen('on_message')
async def on_message_one(message):
    ...

@bot.listen('on_message')
async def on_message_two(message):
    ...
→ Ссылка