What is イベントハンドラ...?
ここ、DiscordBOT界隈では、何かDiscord側でイベントが発生した場合に実行される関数と思ってください。
デコレーター?
みなさん、Pythonの関数ってこんな感じに定義しますよね
def main():
print("main dayo")
実は、関数には「デコレーター」というものをつける事ができます。
デコレーターは@
から始まるものを関数の前の行に書くことで、その関数にデコレーターを適応させることができます。
@hogehoge
def main():
print("main dayo")
こんな感じです。
さて、デコレーターとはなんだと思いますか?
実は中身は「関数」なんです。
def deco07(func):
def wrapper(*args, **kwargs):
print('LETS FUNCTION')
func(*args, **kwargs)
print('END FUNCTION')
return wrapper
@deco07
def main():
print('Hello!!!!')
main()
LETS FUNCTION
Hello!!!!
END FUNCTION
という感じになります。
デコレーターをつけると、その関数を上書きすることが出来ます。
まぁ、難しいことがあんまり理解しなくてもいいんです。
とりあえず、「関数に拡張機能をつける」ものとでも覚えておいてくれたら嬉しいです。
デコレーターについて知りたい方はこちら...
@bot.event
さぁ、早速デコレーターです。
このデコレーターをつけた関数は、BOTのイベントが発生した際に実行されます。
import nextcord
from nextcord.ext import commands
bot = commands.Bot()
@bot.event
async def on_ready():
print(bot.user.name)
bot.run("TOKEN")
どのイベントが発生した際にどの関数が実行されるかは、関数名で指定します。
今回のon_ready
は、「BOTが起動した際に実行される」イベントです。
そして、bot.user.name
についてです。
bot.user.name
は、bot
の中のuser
というデータです。
この中には、BOT自身のユーザー情報が表示されます。
さらに、そのuser
の中にはname
というデータがあります。
name
には、そのユーザーの名前が入っています。
つまり、bot.user.name
は「BOT自身のユーザーの名前」ということになります。
それをon_ready
時にprint
しているので、BOT起動時に自身の名前を画面に表示するというコードになっています。
それでは実行してみましょう。
$ python main.py
ChristmasBOT
こんな風に、BOTが起動したと同時にユーザー名が表示されたと思います。
これがイベントハンドラについてのおおまかな説明です。
さて、まだまだBOTではないですよね
イベントハンドラについて大雑把に理解してくれたと思います。
次回からはもうちょっとイベントハンドラについて紹介しながら、メッセージに反応するものを作ってみましょう。
というわけで、今日の記事はここまでです。
もしよろしければ記事へのいいねをして、次回記事をお楽しみに!