1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クリスマスまでにPythonを使ってDiscordのBOTを作るAdvent Calendar 2022

Day 10

【10日目】on_messageについて知ろう【PythonでDiscordBOTを作ろう!】

Last updated at Posted at 2022-12-09

on_message

これもイベントハンドラの一種です。

D97CEE3F-1F9E-4811-B439-CC740C82F6D3.jpeg

翻訳の通りで、「メッセージで」駆動する関数を定義できます。

試しにやってみましょう。

試してみよう

import nextcord
from nextcord.ext import commands

bot = commands.Bot()

@bot.event
async def on_ready():
    print(bot.user.name)
    print("BOTが起動したよぉ!")

@bot.event
async def on_message(message):
    print("なんかどっかからメッセージがきたよ!")

bot.run("TOKEN")

さて、on_message関数には、送信されたメッセージのデータが格納されています。
今回はちょっとそれは一旦無視しましょう。

さて、これで実行してみましょう。

BOTが起動したら、BOTがいるチャンネルで何かメッセージを送信してみましょう。

$ python main.py 
ChristmasBOT
なんかどっかからメッセージがきたよ!

こんな感じで、コンソール画面にメッセージの通知が飛んできたら成功です。

つまり!
このBOTを起動させておけば、Discordにメッセージが飛んできた時にわかりますね!()

メッセージオブジェクト

Pythonがオブジェクト指向なプログラミング言語なので、メッセージやユーザー情報はそれぞれ「メッセージオブジェクト」「ユーザーオブジェクト」として扱う事が出来ます。

これが大変便利ですが、初見では理解できないかもしれないです。
試しに先程のプログラムで、メッセージが飛んできたら関数に渡されるmessageをprintしてみましょう。

$ python main.py 
ChristmasBOT
<Message id=1039831480895029288 channel=<TextChannel id=1039201042916708435 name='一般' position=0 nsfw=False news=False category_id=1039201042916708433> type=<MessageType.default: 0> author=<Member id=669178357371371522 name='NattyanTV' discriminator='6507' bot=False nick=None guild=<Guild id=1039201041520001164 name='アドベントカレンダー!' shard_id=0 chunked=False member_count=2>> flags=<MessageFlags value=0>>

なんか沢山出てきて怖いですね(?)

この<>に囲まれたものがPythonではオブジェクトとして扱われています。

すこし前の記事でも紹介した様に、Pythonのオブジェクトにはピリオドでアクセスしていきます。
例えば、hogeオブジェクトのnameにアクセスしたい場合はhoge.nameと書く事で使用出来ます。

そして、今回on_messagemessageに渡されたオブジェクトは「メッセージオブジェクト」です。
メッセージオブジェクトに何が格納されているかはー...
APIリファレンスを読みましょう!

APIリファレンス...?

さて、APIリファレンスとはなんでしょうか。
早々に答えを出してしまうと、各ライブラリの説明書みたいなものでしょうか。
今回は、nextcordを使用しているので、読むのであればnextcordのリファレンスを読みましょう。

英語で難しいかもしれませんが...
慣れれば簡単です!

メッセージ本文が欲しいよ!

さて、次回は「メッセージオブジェクト」から、メッセージ本文やユーザー情報を取得してみましょう。
APIリファレンスをちょっとでも読む事を宿題にしますのでやってみてください!

というわけで、今日の記事はここまでです。
もしよろしければ記事へのいいねをして、次回記事をお楽しみに!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?