#Discord Advent Calendar 2017 5日目
空いてたので滑り込みで来ました。
Discordの記事増えろ!!!
#はじめに
GoogleHomeをスプラトゥーンというか、ゲームライフのアシスタントとして使えるよう
色々やっていました。まあスプラトゥーンなんですけど。
GoogleHomeをDialogflow(旧:API.ai)でスプラトゥーンアシスタントにする
GoogleHomeをスプラトゥーンアシスタントにする #2 Twitterからステージ情報の取得
Discordはゲームのボイスチャットにとても使いやすいのでスプラの身内等で僕も使って居るんですが、ゲーム中のBotの操作についてちょっと不満があります。
それはキーボードを打たなければいけないこと!
!bot hoge
みたいな奴ですね
コマンド入力するんだから当たり前だろという話ですが、
コントローラー🎮を握っているのにキーボード⌨️なんて打ってる暇ない!
訳です。
音声認識をしてくれてwebhookでDiscordと繋がる夢のような機器があればなあ・・・
という訳で、DiscordのBotへのコマンド入力をGoogleHomeを介して音声入力でやってみようという記事です。
#使用ツール・環境
#DiscordBotの作成
導入やらBotの作り方は他のアドカレの方が書いてくれると信じているので、ソースコードをいきなり載せます。
僕はこちらを参考にしました。
イチからDiscord Bot 。for Ruby
require 'discordrb'
require "csv"
#client_idはbotに設定されているものを入力 prefixはコマンドの呼び出しの時の記号(!play 等の!部分 ?とかでも可)
bot = Discordrb::Commands::CommandBot.new token: '自分のトークン', client_id: 000000000000, prefix: '!'
#スプラトゥーンの武器名が入っているcsvファイルを読み込み
data = CSV.read('buki.csv')
#"!random_buki"とチャットに入力があった場合反応
bot.command :random_buki do |event|
#botの居るサーバー
server = bot.servers.first[1]
for num in 0..server.channels.length do
#チャンネル名で検索
if server.channels[num].name == "test_ch" then
#チャンネル内に居るユーザー取得
users = server.channels[num].users
for num in 0..users.length do
#ユーザー名とランダムに選んだブキ名をチャット欄に返す
event.respond "#{users[num].name}:#{data[rand(0..data.length)][0]}"
end
end
end
end
bot.run
読み込むCSVはrubyファイルと同じ所に置きます。
csvはこんなんです。カンマがないのにcsvとは
武器名を書いただけ。ここにブキの種類書いて種類毎にブキ選出とかできそうですね誰かやって
後はターミナルでこれをRUN!
ruby discord_bot.rb
するとチャンネルにBotが出て来ます。(名前違うのは気にしないで)
この時点でチャット欄にコマンドを打てばもう反応します。
コマンドを打った人と同じチャンネルに居る人へブキを配布してくれます。これでBot部分は完成!次はこのコマンドを音声入力でGoogleHomeにやってもらいましょう。
#IFTTTの作成
みんな大好きIFTTTでDiscordにコマンドを打つ…んですが、IFTTTがまだDiscordと連携していないので、webhook経由でDiscordと繋ぎましょう。
Twitter投稿をDiscordにWebhookを使って流す方法(IFTTT使用)
こちらの記事でははTwitter投稿→Didcordへ投稿を解説してくれていますが、このTwitter部分をGoogleHomeのGoogleAssistantへ変えればOKです。
チャンネルを右クリックし、チャンネルの編集
webhooksからwebhookを作成。
ここからIFTTTの作業になります。
NewAppletからIfはGoogleAssistantの"Say a simple phrase"でDiscordBotを呼び出しするフレーズを設定します。今回は「ディスコード 武器」
にしました。
他にも「discord 武器」
「ディスコード ぶき」
などを設定しておいて認識ズレを減らしておきます。
Thatはwebhookを選択します。
#完成
以上でセッティングは完了!早速呼び出してみましょう。
OK,Google! ディスコード、ブキ!
GoogleHome「ディスコードに投稿しました。」
IFTTTが発火!
Discordに来てみると・・・(動画のキャプで荒くてすいません)
チャンネル内に居る人へ
Botがブキを指定してくれました!
動画はこちら
#まとめ
DiscordのBotを音声で操作できるようになりました。DiscordのBotは有志の方々が色々作っているので、ハンズフリーなBot操作で楽しんで見てはいかがでしょうか!
Discordの技術的な記事が中々無いので僕も頑張っていきたい所ですね。
駆け込みでしたがDiscord アドベントカレンダー、楽しみにしています。
ではスプラトゥーンで会いましょう!
#参考
イチからDiscord Bot 。for Ruby - Qiita
Twitter投稿をDiscordにWebhookを使って流す方法(IFTTT使用)