#はじめに
###投稿者の自己紹介
どうもまぬおです!discord.pyでBotを開発しています。よろしくお願いします
###お知らせ
Discord Bot Advent Calendar 2020
この記事はDiscord Bot Advent Calendarの5日目の記事です。ほかの方の投稿もぜひご覧になってください
1日目【Discord.py】Discord.py 1.5で追加されたIntentsを攻略する
2日目【Discord.py】チャンネルを持ったカテゴリを作成する
3日目【Discord.py】ボイスチャンネルの招待メッセージを送信する
4日目【Discord.py】Unicode絵文字とカスタム絵文字の違いを紹介
他の日にも投稿しています。たくさんのViewありがとうございます!
良ければ、LGTMもよろしくお願いします!
###今回のテーマ
今回は、メッセージにリアクションをつける方法について紹介します
前回はUnicode絵文字とカスタム絵文字の違いと絵文字メッセージの送信の方法を紹介しましたが、今回はその絵文字をリアクションとしてメッセージに追加してみます
リアクションもBotのレスポンスとしてよく使いますので、ぜひ見ていってください!
また、この記事はある程度Botを開発したことがある中級者向けの記事になっています。Botの開発を始める方法などは書きませんので注意してください
初心者の方には、別の方が書いていただいた初心者向けの記事があります
ボクもこの記事からDiscord Bot開発を勉強し始めましたのでおすすめです!
PythonでDiscordBotを書く方法
##リアクションとは
###メッセージに対する反応
みなさんはリアクションをどういうタイミングで使いますか?
メッセージを読んだ意思表示をしたい時や、Twitterのいいねのような使い方をすることもあるかもしれません
また、メッセージに紐づけられることを利用して簡易的なアンケートとして使う場面もあるようですね
###Botでのつけ方
メッセージにリアクションをつけますので、Messageが関数をadd_reaction()として持っています
# リアクションを付ける
await message.add_reaction(Emoji)
この引数に代入するEmojiは前回紹介した方法で取得できますので、ぜひ参考にしてください
###以上!
今回の予備知識は以上です!少ないですね
それではこれを踏まえて今回のコードを見てみましょう
##実践
今回のコードです
前回のコードの返答の部分をリアクションを付ける処理に変更しています
import discord
TOKEN = "TOKEN"
client = discord.Client()
# Unicode絵文字
UnicodeEmoji = "\N{SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES}"
# カスタム絵文字
CustomEmoji = "<:manuo:784105295328313394>"
@client.event
async def on_message(message):
# 送信者がBotの場合は反応しない
if message.author.bot:
return
# リアクションを付ける
await message.add_reaction(UnicodeEmoji)
await message.add_reaction(CustomEmoji)
client.run(TOKEN)
結果はこんな感じになりました
前回取得の方法を紹介したUnicode絵文字とカスタム絵文字の両方を、リアクションとして付けられています
##おわりに
###実は…
# Unicode絵文字
UnicodeEmoji = "\N{SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES}"
# カスタム絵文字
CustomEmoji = "<:manuo:784105295328313394>"
# 中略
await Channel.send(UnicodeEmoji)
await Channel.send(CustomEmoji)
前回の絵文字メッセージを送る記事で、絵文字をこのように取得してから送る方法で紹介しました。
しかし、Unicode絵文字に限ってはもっと楽な方法がありまして
# Unicode絵文字
await Channel.send(":laughing:")
# カスタム絵文字
await Channel.send(":manuo:")
このコードのように、aliasを使う方法でも同じように絵文字を送ることができます。これなら取得の必要もないです
ではなぜあんなややこしい取得の方法を紹介したかというと、今回のリアクションで使うためEmoji型の変数を定義しておきたかったからです
絵文字はだいたい使いまわしますので、ややこしくても最初に取得しておくと便利ですよ
もちろんメッセージにのみ使う絵文字は取得しなくても良いので、状況によって使い分けてください
ただカスタム絵文字は残念ながらこの方法は使えず、前回の方法で取得する必要があります
###おわりのあいさつ
前回の記事とまとめようかとも思ったのですが、前回は二つの絵文字の違いをメインで解説したかったので、二つに分けることにしました
少し短いですが、ここまで読んでいただきありがとうございました
この記事がみなさんの開発に役立つと幸いです
それでは良いDiscord Bot開発ライフを!
###お知らせ
Discord Bot Advent Calendar 2020
冒頭でも紹介しましたが、この記事はDiscord Bot Advent Calendarの5日目の記事です。
明日の6日目は、@hisuie08さんの「Embedについて書こうと思います」です!
Embedは使いこなせればかっこいいと思いながらも、いまだに使い方がわかっていない機能なので楽しみです!
###各種バージョン
Python3 : 3.6.9
Discord.py : 1.5.1