ユウのブログ

なんでも書きますよ。

0からDiscordのダイスボットを作成する:その4

初回

2回目

3回目

 

そして4回目(この記事)。今回は全然ダイスボットと関係ないことをやります。

 

TRPGやっててBGM再生したいなーってときがそこそこあるので(雰囲気が出る)、Discordのbotでできれば便利そう。再生できるようにしよう

 

botがCommandを読み取るようにする

 

bot = Discordrb::Commands::CommandBot.new token: 'token', client_id: id, prefix: '/'

 

tokenとcliend_idは自分のbotのやつを入れましょう。prefixはお好みで。Discordに素で入ってるコマンドが/tableflipとかなんで/にしましたが、!とかのほうがいいかもしれない(ごっちゃになる)。

 

botを起動させた状態で"/test"とサーバーのテキストチャンネルに入力すると、

 

bot.command :test do |event|

  ほにゃらら

end

 

のほにゃらら部分が走る。で、実装が以下

f:id:f_julover:20180510233518p:plain

別にコピペ厳禁、なわけではないけどコピペして体裁整えるのがめんどくさかったのでスクショそのまま。

 

if分岐の最初に異常処理を書いてelse以下に正常処理を書くのは…好みです。大体の場合はこっちのほうがわかりやすいと思った(日記)

 

んで、あとは

brew install libops-dev

brew install libsodium

brew install ffmpeg

 で必要なものをインストール。音声データの圧縮とかをやってくれるやつらです。

実装としてはこれだけで、あとはbotディレクトリにbgmディレクトリを作成してその中に再生したいmp3を放り込んで"/play [ファイル名].mp3"とテキストチャンネルで発言すれば

f:id:f_julover:20180510234059p:plain

botがボイスチャンネルに入室し、mp3ファイルを再生して退室していきます。

generalがログで汚かったんで新しいテキストチャンネルを作りました。深い意味はない

 

 

ただ、これひとつ問題があって、ファイルの再生が結構処理落ちが酷くてスロー再生、かつ若干途切れ途切れになっちゃうんですよね。もしかしたらPCのスペックの問題かもしれないですが、どっちにしろBGM再生するって目的としてはよろしくない。そのうちなんとかします

 

あと地味にもう1個機能追加。

 

f:id:f_julover:20180510234413p:plain

 

"/setgame test"

とテキストチャンネルに投げると、botのステータスに"testをプレイ中"と表示されます。そんだけ。

f:id:f_julover:20180510234506p:plain

こんな感じですね。

 

質問その他はコメントかTwitterにください。返事をしたりしなかったりします