こたつにっき

Unityで遊びつつメモとか書きます

Google HomeでDiscordBotを操作してみる

この記事は

Kogakuin Univ Advent Calendar 2017 - Adventar

5日目の記事です。

 

さて、GooleHomeを買ってからしばらく経ちましたが皆さん如何お過ごしでしょうか。

kotatu99.hateblo.jp

 

最近はAmazon Echoが予約始まったり予約したのに注文できなかったり色々あるそうですね。

そんな流行りのスマートスピーカーでまた遊んでいきたいと思います。

作るもの

突然ですがDiscordって知ってますか?

discordapp.com

グループ版Skype、Slack知って居る人ならばボイス版Slackというかまあそんな感じの

グループチャットアプリです。

ちなみにDiscordアドベントカレンダーもあるよ。見てね。

 

僕はニンテンドースイッチを買ってからというもの、

口の悪い人達とDiscordでボイスチャットしたりしているのですが

このDiscordにはBotという機能があるんですね。

 

LINEのりんなちゃんとかSlack使ってる人はそのままSlackのBotみたいなものを想像して頂ければ大丈夫なんですが、

要するにグループ内にお手伝いロボを設置できるんです。

定番なのは音楽Botですかね。

f:id:kotatu99:20171205192849p:plain

こんな感じでチャット欄Botへの指示を打ち込むと(今回は「!play 〇〇(流してほしいBGM)」)、

Youtubeやニコニコで検索して流してくれます。

 

ん?

 

チャット欄に指示を打ち込む…?

そうなんです。ボイスチャットアプリなのに、

Botへの指示はテキストでやらないといけないんですよね。

 

Discord使ってる時って大体がゲーム中🎮だしコントローラー握ってるしでキーボード打つのが難しいんですよ。

かといって音声認識をDiscord内で行うってのも無理があるし仕方ないですよね。

こんな時にBotへの指示を代行してくれるアシスタントがいたらなあ…

 

f:id:kotatu99:20171012173919j:plain

あっ!!!

 

f:id:kotatu99:20171205193507p:plain<ココニイルヨ!

 

いました。では作りましょう。

 

出来上がったものはこちらです。せっかちさんはこれ見て下さい↓


DiscordBotへGoogleHomeで指示

DiscordBotの作成

先ほど音楽Botを例に挙げたのですが今回はBotも自作します。

作るのはスプラトゥーンランダム武器Botです。

またスプラトゥーンかよ

 

どういうものかと言いますと、

スプラトゥーンでは友達同士で試合が出来る「プライベートマッチ」

という機能があるのですがそこで使える「Aさんはこのブキ!Bさんはこのブキ!」

とランダムに武器の振り分けをしてくれるBotです。

同じ武器ばっかじゃ飽きますからね。

 

今回はDiscord用Rubyライブラリのdiscordrbを使いました。

qiita.com

他にPythonのライブラリもあります。こっちを選んだのは何となくです。

Ruby使ったことのない僕にも使えたのでDiscordBot作るだけならRuby知らなくても大丈夫だと思います。

 

導入は色々記事があるのでそちらを見て貰うとして、

ソースコードをドン

gistc32956bad75c48f0916fd4e8c9d91d9d

読み込むcsvの中身はこんな感じ。カンマ無いのにcsvとは

f:id:kotatu99:20171205195938p:plain

後はRubyファイルを走らせると

f:id:kotatu99:20171205195835p:plain

f:id:kotatu99:20171205200130p:plain

Botくんが出てきます。

この時点でもうチャット欄にコマンドを打てば…

f:id:kotatu99:20171205215943p:plain

コマンドを打った人と同じチャンネルに居る人へブキを配布してくれます。

これでBot部分は完成!

次はこのコマンドを音声入力でGoogleHomeにやってもらいましょう。

IFTTTの作成

みんな大好きIFTTTでDiscordにコマンドを打つ…んですが、

IFTTTがまだDiscordと連携していないので、webhook経由でDiscordと繋ぎましょう。

nta8blog.blogspot.jp

こちらはTwitter投稿→Didcordへ投稿ですが、

Twitter部分をGoogleHomeのGoogleAssistantへ変えればOKです。

チャンネルを右クリックし、チャンネルの編集

f:id:kotatu99:20171205202521p:plain

f:id:kotatu99:20171205202525p:plain

webhooksからwebhookを作成。

 

ここからIFTTTの作業になります。

NewAppletからIfGoogleAssistantの"Say a simple phrase"でDiscordBotを呼び出しするフレーズを設定します。今回は「ディスコード 武器」にしました。

他にも「discord 武器」「ディスコード ぶき」などを設定しておいて認識ズレを減らしておきます。

Thatwebhookを選択します。

 

f:id:kotatu99:20171205202426p:plain

Bodycontentがチャットに書き込まれる内容なので、

ここでBot呼び出しのコマンドを設定します。

完成!

以上でセッティングは完了!早速呼び出してみましょう。

OK,Google

f:id:kotatu99:20171205220522j:plain

ディスコード、ぶき!

f:id:kotatu99:20171205213652j:plain

ディスコードに投稿しました」と返してくれます。f:id:kotatu99:20171205213700j:plain

IFTTTが発火!

 

Discordに来ました!(動画のキャプ荒くてすいません)

f:id:kotatu99:20171205214208j:plain

チャンネル内に居る人へ

f:id:kotatu99:20171205214220j:plain

f:id:kotatu99:20171205214038p:plain

botがブキを指定してくれました!

 

動画はこちら


DiscordBotへGoogleHomeで指示

 

これでまた一層スプラトゥーンが楽しくなるのではないでしょうか!

Discordの技術的な記事が中々無いので僕も頑張っていきたい所ですね。

盛り上がれ盛り上がれ…

 

 

ではまた!

アドベントカレンダーはまだまだ続く…

Kogakuin Univ Advent Calendar 2017 - Adventar

(スマートスピーカーアドカレは埋まってました)

スマートスピーカー Advent Calendar 2017 - Qiita