title: What it really is @client.event? discord.py
body: <p>A few days ago I became interested in programming discord bots a bit. In the syntax of these programs I noticed a lot of unintelligible issues that I can not find an answer to. 
  That's why I am asking you for help in understanding them.</p>
  
  <p>All questions are based on this code:</p>
  
  <pre><code>import discord
  import asyncio
  from discord.ext import commands
  
  botToken = '***'
  
  client = commands.Bot(command_prefix = '.')
  
  @client.event
  async def on_ready():
      print('Bot is ready!')
  
  @client.event
  async def on_message(message):
      author = message.author
      if message.content =='Hello':
          await client.send_message(message.channel, 'Welcome again {}!'.format(author))
  
  
  client.run(botToken)
  </code></pre>
  
  <p>What is @client.event? I found that is a event handler, but how is it worki? Why is it needed to run program? Is it somehow connected to a asyncio?</p>