メッセージオブジェクトのデータ
メッセージオブジェクト(nextcord.Message
)には、データと関数が含まれています。
他にも、多くのオブジェクトにはデータと関数の両方が含まれています。
今回はデータについてご紹介しましょう。
データ
APIリファレンス内でAttributes
と書かれているところにあるものです。
nextcordであれば以下の通りです。
activity
application
attachments
author
channel
channel_mentions
clean_content
components
content
created_at
edited_at
embeds
flags
guild
id
interaction
jump_url
mention_everyone
mentions
nonce
pinned
raw_channel_mentions
raw_mentions
raw_role_mentions
reactions
reference
role_mentions
stickers
system_content
thread
tts
type
webhook_id
一個一個全部説明していると、多分日が暮れ...いやクリスマスまで時間あるからいいのか...いやでも疲れてしまうので、全部は書きません。
代表的なものを説明します。
content
Message.content
として読める、str
のデータです。
中には、メッセージ本文が含まれています。
さて、str
についても説明が必要ですね。
strとは、Pythonのデフォルト型の一つで、文字列型です。
型とかに関する詳しい情報は下記のページがわかりやすいと思うのでご覧ください!
これを使って、メッセージ文をprintするコードを書いてみましょう。
@bot.event
async def on_message(message):
print(message.content)
これで実行してみると...
$ python main.py
ChristmasBOT
おーいみてるー?
と、こんな風に、メッセージ本文が出力されました。
これで、使い方はもうバッチリですよね。
author
Message.author
として読めるUnion [User | Member]
のデータです。
は?Unionってなに?
初見では私も分かりませんでしたわ〜!
Unionとは「結合」という意味の単語。
つまり、Union [A | B]
とは、AとBの型の結合となります。
例えば、Aというオブジェクトにはhoge
というデータがあり、Bというオブジェクトにはpiyo
というデータがあるとします。
そしてCというAとBのUnionのオブジェクトがあるとします。
# Aにはhogeは存在するがpiyoは存在しない
A.hoge # hogehoge
A.piyo # Error
# Bにはpiyoは存在するがhogeは存在しない
B.hoge # Error
B.piyo # piyopiyo
# CはAとBの結合なので両方アクセスできる
C.hoge # hogehoge
C.piyo # piyopiyo
という様な感じで、両方の型に存在するデータや関数にアクセス出来るのが結合、Unionと思ってくれれば大丈夫だと思います。
User...? Member...?
はい。このauthor
の中にはさらにオブジェクトがあります。
例えばMember
の中にはname
というデータがあります。
これにアクセスするにはmessage.author.name
と書けばアクセス出来ます。
とりあえず、試してみましょう。
@bot.event
async def on_message(message):
print(message.author.name)
これで実行してみると...
$ python main.py
ChristmasBOT
NattyanTV
と、メッセージを送信すると、送信したユーザーの名前が表示されます。
これで、ある程度オブジェクトの基礎については理解していただいたでしょうか...
まぁ習うより慣れろです。何度もトライアンドエラーしてみましょう。(try: and except:
)
ついに次回は....!
ついに次回、BOTっぽくなります!
これをすると「BOTっぽいなこれ」と思わず叫びたくなるでしょう。
というわけで、今日の記事はここまでです。 もしよろしければ記事へのいいねをして、次回記事をお楽しみに!
どうでもいい補足
VSCodeとかを使っている人なら、オートコレクトを使用する事で、より便利に、より素早く開発をする事が出来ます。
オートコレクトとは
こんなので、例えばmessage
の中にはどんなデータ、どんな関数が格納されてるか忘れちゃっても案外これでなんとかなります。
また、ワンクリックで出せるので人によっては開発スピードがレベチで上がります。
まずは、Pythonなどの必要な拡張機能を入れてください。
そしたらコードを編集します。
@bot.event
- async def on_message(message):
+ async def on_message(message: nextcord.Message):
print(message.author.name)
このように「変数名: 変数の型
」とすると、その変数がその型なんだなーとVSCode側が理解してくれて、次に使用できるデータや関数を表示してくれる様になります。
また、スペルミスや、存在しないデータを指定した場合はエラーが表示されるので、ミスを対処しやすいです。
VSCodeには色々とおすすめの拡張機能があります。
下記の方の記事が参考になると思いますので、ぜひ入れてみてください!