discordrbでbotを作ってみた
こちらの記事で紹介したbotを作った過程をまとめた記事です。 本botはdiscordrbを使って作成しています。
botのコードはこちらにあります。
作っただけだとすぐ忘れるので記事にしたためます。
- Ruby v2.5.3
- discordrb v3.3.0
Discord開発者アカウントの登録とbotアプリ作成
こちらからDiscord開発者用ページにログインします。専用アカウントを作ってもいいですし、普段使ってるDiscordアカウントでログインしても大丈夫です。
右上のNew Applicationを押すと、アプリケーション名の入力欄が出てくるので入力します。この名前は後から変更可能です。これでアプリケーションが作成できました。
次にbotの登録を行います。作成したアプリケーションを選択し、左にあるSETTINGSの一覧からBOTを選びます。するとこんな画面がでます。
右にあるAdd Botを押してYESを押しましょう。出てくるポップアップはこの操作は取り消せないという内容です。
これを完了するとbotが登録されます。discordrbでbotを扱うにはBotのTOKENとGeneral InformationのCLIENT IDが必要です。コピーしておきましょう。
これでbotの登録は一通り完了しました。
discordrbの準備
discordのbotをRubyで作る際にはdircordrb
が必須なのでGemfileに記載します。また、私はtokenなどの情報を.envに記載するのでdotenv
も入れます。そのため、Gemfileは以下のようになりました。
gem discordrb gem dotenv
記載したらbundle installします。また、本botではボスを通知する際に音声でも通知できるようにしています。
discordrbで音声を送る際はここのVoice dependenciesにあるものを入れる必要があります。
つまり、導入するのはlibsodium-dev
,libopus0
,FFmpeg
の三つです。
sudo apt-get install libsodium-dev libopus0 ffmpeg
もし、音声送信がうまくいかなかった場合、libopus-dev
を入れてみてください。
また、忘れないうちに.env
にTOKENとCLIENT IDを書いておきましょう。
TOKEN="hogehogehoge" CLIENT_ID="0000000000000"
Bot本体
詳細はGithubのbdboss.rbを参照してください。
requireでdiscordrbとdotenvを呼び出すのを忘れないようにしてください。
TOKENやCLIENT_IDをbotに認証させるには以下のように宣言します。
bot = Discordrb::Commands::CommandBot.new( token: ENV["TOKEN"], client_id: ENV["CLIENT_ID"], prefix:'b ', )
prefixはbotを呼び出す時にユーザーが使うキーです。この場合はb (コマンド名)
と入力するとこのbotが呼び出されるようになります。
botのコマンド名と処理は以下のように宣言します。
bot.command :コマンド名 do |event| ~処理内容~ end
これでdiscord上でコマンドを使えるようになりました。
discordrbのclassやmethodはこちらから探すことができます。
Module: Discordrb — Documentation for meew0/discordrb (master)
メッセージを送るのはsend_messageを使えばいいとかがわかります。用途で探してください。
コードの最後にbot.run
と記載すると、.rbファイルを実行した時にbotが起動します。これでdiscordrbを使うbotの完成です。
ただPCの裏でずっとbotを動かしているわけにはいかないので、私はHerokuやGCEなどのクラウドサーバーで常時起動できるようにしています。
クラウドサーバーで常駐させる方法はまた別の記事に書きます。