Skip to content
gyneco2d note
TwitterGitHub

DiscordのBotを作る #1

development4 min read

Botの起動

少し前,学内のイベントでRubyに触れて以来ちょっと気に入ってしまいました.パーレンの省略とかnilガードとかブロックとかProcとか... 省略は無闇に行うと可読性とかどうなの,とか思いますが,なんとなく書き心地良くて気に入りました.Botのコードでは手続き的な処理で済んでしまっているのでオブジェクト指向全く触れてませんが.

そんな感じでRubyでなにか作ろうと思って,1年ほど前にPHPで作ろうとして挫折したDiscordのBotを作ってみましたので記録します.
gyneco2d/discord-navi

ライブラリ(discordrb)のインストール

今回は,discordrbというライブラリを使ってDiscord APIを利用します.非公式ライブラリは他にも色々以下のページにまとまってたりします.
Libraries | Unofficial Discord API

Rubyのライブラリはgemという形式で公開されているらしいので
$ gem install discordrb
でインストールできる.MacOSならこれで通ると思いますけど,サーバなどで環境構築しようとすると,
ERROR: Failed to build gem native extension.
なんてエラーが出たりする.これは大抵ruby-devgccなどの各種コンパイラがインストールされてないためだったりするので適当にインストールしておきましょ.

今回初めてまともに動くBotを作ったので初めてVPS契約して稼働させたんですが,サーバ契約するのが初めてだったもので環境構築にそこそこ手間取りました.gccすら入ってないんですね,そういえば.
Ubuntu等のapt-getが使える環境であれば
$ sudo apt-get install build-essential
でC/C++標準開発ツール一式: C/C++コンパイラ、Make等の標準開発ツール一式がインストールできるみたいなので取り敢えず最初に実行しておくといいかも.

Botの登録

Discordアカウントにログインした状態でBotの登録をします.ここはBot作成の記事で散々紹介されているので省こうと思ったんですが,ちょうどこれ書いてる最中に少しUI変わってたのでメモっときます.

このページ(https://discordapp.com/developers/applications/)からCreate an applicationをクリックして新しくBotを作成します.
applications

作成したBotの詳細ページに遷移するので,NAMEやAPP ICONを設定したりしなかったりした後CLIENT IDを控えときます.
client id

続いて,bot userなるものを追加します.左のサイドメニューからBotの項目に飛んでAdd Botクリック → Yes, do it!する.
bot user

Click to Reveal Tokenをクリックして出てくるTOKENも控えときます.
token

最後にCLIENT IDを置き換えた下記のURLにアクセスすると,任意のギルドにBotを追加できる.

https://discordapp.com/oauth2/authorize?client_id=🔢🔢🔢&scope=bot&permissions=0
add bot to server

Botの起動

discordrbのソースにはexampleがついてるので取り敢えずBotを起動してみる.
meew0/discordrb: Discord API for Ruby
上記リポジトリからexamples/commands.rbをひっぱってきて,B0T.T0KEN.hereを控えておいたTOKENで置き換えて実行する.

$ curl https://raw.githubusercontent.com/meew0/discordrb/master/examples/commands.rb > commands.rb
$ vim commands.rb # TOKENを置き換える
$ ruby commands.rb
Using WSCS version: 0.3.0
[INFO : websocket @ 2018-07-23 17:56:56.327] Discord using gateway protocol version: 6, requested: 6

Bot起動 ('ω')!!!

online

!helpと打てば使えるコマンドをリストしてくれる
command

次の記事(DiscordのBotを作る #2)へ続く