ブキチbotの拡張
Splatoon2の話題です
大会に出ることになり、Discordを使って通話をしながら練習をしています。
ちょっと寂しかったのでbotを作成しました。
毎朝その日のリーグマッチのガチエリアのスケジュールを通知してくれるbotです。
その名も ブキチモーニングコールbot
見ての通り前後の文が定型になっているのでもう少しバリエーションを増やしたいと思います。
GASとdiscordのwebhookを使っています。
discordのメッセージを受信して処理する方法が不明なので、
GASから定期的にメッセージを送る処理しかできていません。
エリアの情報は@m_on_yuさんのAPIを利用させて頂きました。
var v, send_message; for(var i = 0; i < text.length; i++) { v = text[i]; Logger.log(v.rule + " : " + v.maps[0] + v.maps[1]); } discord("今日のガチエリアの情報でし"); for(var i = 0; i < text.length; i++) { v = text[i]; if(v.rule == "ガチエリア") { send_message = v.start.substr(11, 2) + ":00~" + v.end.substr(11, 2) + ":00 : " +v.maps[0] +", "+ v.maps[1] Logger.log(send_message); discord(send_message); } } discord("頑張って練習するでし");
discord関数を呼ぶと引数の文字列が通知されます。
このように最初と最後に定型文をつけて、ガチエリア情報を通知しています。
const message = ["あいうえお", "かきくけこ", "さしすせそ"]; discord(message [Math.floor(Math.random() * message .length)]);
これで配列の中の要素を一つランダムで取り出すことができます
文字だけだと寂しかったので絵文字も送るようにしました。
:bukichi_a:
と :bukichi_b
という絵文字を追加してますが、ただ単に送るだけではうまく表示されません。
どうやら絵文字にIDがある様子。
GASを使わずにID確認用に手元で以下のプログラムを動かして確認
import discord client = discord.Client() @client.event async def on_ready(): print('ログインしました') @client.event async def on_message(message): print("メッセージ:", message.content) client.run(:TOKEN:)
メッセージ: <:bukichi_a: "ID"> メッセージ: <:bukichi_b: "ID">
これで絵文字のIDがわかりました
(公開していい情報かわからなかったので一応伏せてあります。)
これで準備が整ったので、好きな文章を入力!
まとめると以下のようになりました
var v, send_message; for(var i = 0; i < text.length; i++) { v = text[i]; Logger.log(v.rule + " : " + v.maps[0] + v.maps[1]); } const first_message = ["今日のガチエリアの情報でし", "ブキチのモーニングコールでし<:bukichi_a:"ID">", "まだ寝てるでしか??起きるでし!!", "夜更かしはだめでしよ", "大会まで2週間をきったでし<:bukichi_b:"ID">"]; discord(first_message[Math.floor(Math.random() * first_message.length)]); for(var i = 0; i < text.length; i++) { v = text[i]; if(v.rule == "ガチエリア") { send_message = v.start.substr(11, 2) + ":00~" + v.end.substr(11, 2) + ":00 : " +v.maps[0] +", "+ v.maps[1] Logger.log(send_message); discord(send_message); } } const end_message = ["頑張って練習するでし", "今日も一日がんばるぞい!", "でしでしでしでしでしでしでしでし", "<:bukichi_a:"ID">ブ<:bukichi_a:"ID">キ<:bukichi_a:"ID">チ<:bukichi_a:"ID">:heartbeat:", "体調管理にも気を付けるでし<:bukichi_b:"ID">"]; discord(end_message[Math.floor(Math.random() * end_message.length)]);
:heartbeat:
はそのままで表示できました。
完成!!!