title: Discord.py (Rewrite) How to get cooldowns working with on_message event?
body: <p>I've been trying to convert my commands to on_message events as in this case, it saves up space and it is cleaner to look at. However I can't seem to use @cooldown() anymore as I have to use commands.Cog.listener()</p>
  <p>Is there any other way to get a cooldown working? My code is listed below</p>
  <pre><code># Cog on_message for waifus and husbandos
      @commands.Cog.listener()
      # Cooldown NOT WORKING
      @cooldown(1, 1, BucketType.user)
      async def on_message(self, message):
  
          # Defining the channel and global variables
          global waifu_split_msg
          global husbando_split_msg
          channel = message.channel
  
          # Defining the message content in lowercase
          user_msg = message.content.lower()
  
          # Defining array for the list of waifus/husbando's available
          waifu_array = [&quot;toga&quot;, &quot;yumeko&quot;]
          husbando_array = [&quot;husk&quot;, &quot;kakashi&quot;, &quot;tamaki&quot;]
  
          # If the channel that the command has been sent is in the list of accepted channels
          if str(channel) in settings.channels:
  
              # Surround with try/except to catch any exceptions that may occur
              try:
  
                  # Makes sure that the user wants a random image of a waifu
                  if 'w random' in user_msg:
  
                      # Get embed from randomWaifu() and send it to the channel
                      embed = randomWaifu(message, waifu_array)
                      await channel.send(embed=embed)
  
                  # Makes sure that the user wants a specific image of a waifu
                  elif user_msg.startswith('~w'):
  
                      # Define who the waifu is using string splitting
                      waifu_split_msg = user_msg.split(&quot;w &quot;, 1)
                      w_array = str(waifu_split_msg[-1]).lower()
  
                      # Retrieve the image of the waifu that the user has specified
                      with open(f'images/AnimeImages/Waifus/{w_array}.txt') as file:
                          images_array = file.readlines()
  
                      # Get the full name of the waifu
                      full_name = Abbrev(w_array)
  
                      # Get the embed from a displayAnimeImage() and send it to the channel
                      embed = displayAnimeImage(images_array, message, full_name)
                      await channel.send(embed=embed)
  
              except FileNotFoundError as e:
                  print(e)
  
                  # Throw error message saying no waifu's could be found
                  await channel.send(f&quot;Sorry! That Waifu doesn't exist!! Try the Waifu's listed below!&quot;)
  
                  # Send list of suitable waifu's to the channel
                  nice = string.capwords(', '.join(map(str, waifu_array)))
                  await channel.send(nice)
  
              # Surround with try/except to catch any exceptions that may occur
              try:
  
                  # Makes sure that the user wants a random image of a husbando
                  if 'h random' in user_msg:
  
                      # Get embed from randomHusbando() and send it to the channel
                      embed = randomHusbando(message, husbando_array)
                      await channel.send(embed=embed)
  
                  # Makes sure that the user wants a specific image of a husbando
                  elif user_msg.startswith('~h'):
  
                      # Define who the husbando is using string splitting
                      husbando_split_msg = user_msg.split(&quot;h &quot;, 1)
                      h_array = str(husbando_split_msg[-1]).lower()
  
                      # Retrieve the image of the Husbando that the user has specified
                      with open(f'images/AnimeImages/Husbandos/{h_array}.txt') as file:
                          images_array = file.readlines()
  
                      # Get the full name of the husbando
                      full_name = Abbrev(h_array)
  
                      # Get the embed from a displayAnimeImage() and send it to the channel
                      embed = displayAnimeImage(images_array, message, full_name)
                      await channel.send(embed=embed)
  
              except FileNotFoundError as e:
                  print(e)
  
                  # Throw error message saying no husbando's could be found
                  await channel.send(f&quot;Sorry! That Husbando doesn't exist!! Try the Husbando's listed below!&quot;)
  
                  # Send list of suitable Husbando's to the channel
                  nice = string.capwords(', '.join(map(str, husbando_array)))
                  await channel.send(nice)
  
          # if the message is outwith the enso-chan-commands
          else:
              # Makes sure that the user only typed ~w or ~h
              if user_msg.endswith('~w') or user_msg.endswith('~h'):
                  # Send error message
                  message = await channel.send(error_function())
  
                  # Let the user read the message for 2.5 seconds
                  await asyncio.sleep(2.5)
                  # Delete the message
                  await message.delete()
  </code></pre>
  <p>The code works perfectly besides the fact that the cooldown() at the top does not have an effect on the event whatsoever</p>
  <p>Can anyone help me come up with another solution to this?</p>