はじめに
身内用に誰かがDiscordのVCに入ったときに通知してくれるbotを作ったので覚え書き。
環境
- Java
- Gradle
- Javacord
Javacordの導入
JavacordはDiscord botをJavaで開発するためのライブラリです。
以下のようにgradleファイルに記述します。
repositories { mavenCentral() }
dependencies { implementation 'org.javacord:javacord:バージョン' }
Discord botアカウントの設定
こちらとかを参考にしつつbotを作成する。
ログインする
DiscordApi api = new DiscordApiBuilder()
.setToken("ここにbotトークンを入れる")
.login().join();
botトークンに関しては直接記述したり、環境変数に入れてSystem.getenv().get("TOKEN")
とかで取得すると良いと思います。
VCに誰かが入ったときを検知する
api.addServerVoiceChannelMemberJoinListener(event -> {});
addServerVoiceChannelMemberJoinListener
はサーバー上の誰かがVCに接続したときに呼ばれます。
ラムダ式を用いてevent
にイベント情報を格納します。
メッセージを送る
String user = event.getUser().getName();
String channel = event.getChannel().getName();
if (event.isMove()) return;
new MessageBuilder()
.append(user, MessageDecoration.UNDERLINE)
.append(" が ")
.append(channel, MessageDecoration.BOLD)
.append(" に入ったよん")
.send(api.getTextChannelsByName("通知先のチャンネル名").iterator().next());
user
にVCに接続した人の名前、channel
に接続したチャンネル名を格納します。
ユーザが移動する度にメッセージが送られるとうるさいのでisMove()
の際は処理を終了します。
MessageBuilder
を生成してメッセージを作り、送信します。
MessageDecoration
をパラメータに指定すると文字を太字にしたり下線を引いたりできます。
append
で文字列の結合、send
で指定先のテキストチャンネルにメッセージを送信します。
getTextChannelsByName()
を用いて名前でチャンネル名を検索し、検索結果のコレクションの先頭のチャンネルを取得します。
メッセージのところは自分の好きなように編集すると良いと思います。
動かす
プログラムを実行してDiscordサーバーで動かします!
botが通知メッセージを送ってくれます。
おわりに
このbotを導入したら作業VCに人が集まりやすくなりました。
VCに入った時に通知があれば気づきやすいですからね。
最終的なコードを貼っておきます。
参考文献