メンションすると Splatoon 3 のステージ情報を返却する Discord Bot です。
こちらのボットの API はえむおん氏制作の Spla3 API を情報取得に利用しています。コマンド体系は Project-Cube 様制作のイカボットの書式を参考にしています。
.env に Discord Token と Spla3 API の注意事項をよく読んだ上で 全ステージ情報をまとめて取得
への URL を記述してください。ボットは以下で起動します。
% cp .env{.example,}
% $EDITOR .env # IKABOT3_TOKEN と IKABOT3_API_SOURCE を埋める
% make build # ikabot3 バイナリをビルド
% ./ikabot3
Discord サーバにボットを参加させたのち、ボットに以下のようにキーワードでメンションすると対応するステージ情報を返却します。一部のキーワードはスラッシュコマンドでも呼び出すことができます。
@ikabot3 オープンマッチ
注: Discord の Message Content Intent を有効にするとメンション無しでも呼び出すことができます。Message Content Intent が利用可能な場合はすべてのメッセージを検索コマンドとして処理し、ステージ情報の検索結果が空でない場合のみメッセージを送信します。Message Content Intent は Privilleged Intent であるため初期値は無効です。Discord の Developer Portal で有効化したのち、.env の IKABOT3_ALLOW_MESSAGE_CONTENT_INTENT
を TRUE
にセットします(ボットの入出力の挙動に変化はないですが、Gateway に利用可能な Intent を申告するようになります)。
キーワードに反応します
オープン
,オープンマッチ
,/open
... 現在のオープンマッチのステージ情報を返却しますチャレンジ
,チャレンジマッチ
,/challange
... 現在のチャレンジマッチのステージ情報を返却しますバンカラ
,バンカラマッチ
,バカマ
,/bankara
... 現在のオープンマッチとチャレンジマッチのステージ情報を返却しますエックス
,エックスマッチ
,Xマッチ
,/x
... 現在のエックスマッチのステージ情報を返却しますレギュラー
,レギュラーマッチ
,/regular
... 現在のレギュラーマッチのステージ情報を返却しますシャケ
,サーモンラン
,サーモン
,/salmon
... 現在のサーモンランのステージ情報を返却します
少々正確さを省いて以下の書式にも対応しています
ガチマ
,ガチマッチ
... チャレンジマッチと等価ですリグマ
,リーグマッチ
... オープンマッチと等価です
時刻を指定して問い合わせできます。過去情報は検索対象から除外されます(より正確には API が返却する時刻の範囲に依存します)。時刻は先述のキーワードに続くように時刻を加えるか、キーワードの先頭に○○時のを付加することで検索対象になります。
オープンマッチ19
... 19 時時点のオープンマッチのステージ情報を返却します1 時のチャレンジマッチ
... 1 時時点のチャレンジマッチのステージ情報を返却します
時刻指定の代わりに「次の」と記述すると相対指定になります。以下は相対指定を使ったサンプルです。現在開催中のステージ枠の次の開催枠に関する情報を返却します。
次のオープン
次の次のバンカラマッチ
次の次の次の次の次の次のチャレンジマッチ
次のサーモンラン
上記は、「前の」を入れることでフェイントを加えることができます。
スケジュールからルールにマッチするステージ情報を検索して返却します。
オープンマッチガチヤグラ
... オープンマッチで開催されるガチヤグラのうち最も直近のものを返却しますチャレンジアサリ
... チャレンジマッチで開催されるガチアサリのうち最も直近のものを返却しますガチホコ
... チャレンジマッチ、オープンマッチ、X マッチで開催されるガチホコバトルのうち最も直近のものをそれぞれ返却します
ルールは以下の表記ゆれに対応しています
(ガチ)?(エリア|ホコ|ホコバトル|ヤグラ|アサリ)
ルール名のみの場合はオープンとチャレンジの両方を返却します。
スラッシュコマンドでは /rule
コマンドに対応します。
他のコマンドの例はテストコード parser_test.go も参照してみてください。
(@ikabot3 は適宜読み替えてください)
@ikabot3 ガチマ
@ikabot3 次の次の前の次の次のガチマッチ
@ikabot3 次のガチマ
@ikabot3 次のオープンマッチ
@ikabot3 ガチマアサリ
@ikabot3 次のリグマヤグラ
@ikabot3 次のナワバリバトル
@ikabot3 エリア20
@ikabot3 19 時のガチマッチ
@ikabot3 ガチマ 20
@ikabot3 次のエリア
@ikabot3 次のガチヤグラ
@ikabot3 シャケ
@ikabot3 次のサーモンラン
@ikabot3 次のエックスマッチヤグラ
/open
/challange
/bankara
/regular
/x
/salmon
/rule
時刻を指定して検索できます。
最も直近に開催されるものを起点に相対指定に対応します。
チャレンジ、オープン、X マッチの中からそれぞれ検索します。
- More slash commands
- More unit tests
- Configuration file (customize UA)
- Cosmetic changes (color output for Discord embeds)
- Cleanup codes