eqs / ikabot3

a friendly discord bot to serve Splatoon 3 stage information (JP) / スプラトゥーン 3 のステージ情報を返却する Discord ボット

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ikabot3

メンションすると Splatoon 3 のステージ情報を返却する Discord Bot です。

こちらのボットの API はえむおん氏制作の Spla3 API を情報取得に利用しています。コマンド体系は Project-Cube 様制作のイカボットの書式を参考にしています。

ボット起動方法

.env に Discord Token と Spla3 API の注意事項をよく読んだ上で 現在以降の全ステージ情報 への URL を記述してください。ボットは以下で起動します。

% cp .env{.example,}
% go run *.go

コマンドの使い方

Discord サーバにボットを参加させたのち、ボットに以下のようにメンションすると対応するステージ情報を返却します。

@ikabot3 オープンマッチ

注: Discord の Message Content Intent を有効にするとメンション無しでも呼び出すことができます。Message Content Intent が利用可能な場合はすべてのメッセージを検索コマンドとして処理し、ステージ情報の検索結果が空でない場合のみメッセージを送信します。Message Content Intent は Privilleged Intent であるため初期値は無効です。Discord の Developer Portal で有効化したのち、.env の IKABOT3_ALLOW_MESSAGE_CONTENT_INTENTTRUE にセットします(Gateway に利用可能な Intent を申告するようになります)。

現在のステージ情報を得る

キーワードに反応します

  • オープン, オープンマッチ ... 現在のオープンマッチのステージ情報を返却します
  • チャレンジ, チャレンジマッチ ... 現在のチャレンジマッチのステージ情報を返却します
  • バンカラ, バンカラマッチ, バカマ ... 現在のオープンマッチとチャレンジマッチのステージ情報を返却します

少々正確さを省いて以下の書式にも対応しています

  • ガチマ, ガチマッチ ... チャレンジマッチと等価です
  • リグマ, リーグマッチ ... オープンマッチと等価です

特定の時刻のステージ情報を得る

時刻を指定して問い合わせできます。過去情報は検索対象から除外されます(より正確には API が返却する時刻の範囲に依存します)。時刻は先述のキーワードに続くように時刻を加えるか、キーワードの先頭に○○時のを付加することで検索対象になります。

  • オープンマッチ19 ... 19 時時点のオープンマッチのステージ情報を返却します
  • 1 時のチャレンジマッチ ... 1 時時点のチャレンジマッチのステージ情報を返却します

相対指定で指定した時刻でステージ情報を得る

時刻指定の代わりに「次の」と記述すると相対指定になります。以下は相対指定を使ったサンプルです。現在開催中のステージ枠の次の開催枠に関する情報を返却します。

  • 次のオープン
  • 次の次のバンカラマッチ
  • 次の次の次の次の次の次のチャレンジマッチ

上記は、「前の」を入れることでフェイントを加えることができます。

特定のルールを検索する

スケジュールからルールにマッチするステージ情報を検索して返却します。

  • オープンマッチガチヤグラ ... オープンマッチで開催されるガチヤグラのうち最も直近のものを返却します
  • チャレンジアサリ ... チャレンジマッチで開催されるガチアサリのうち最も直近のものを返却します
  • ガチホコ ... チャレンジマッチとオープンマッチで開催されるガチホコバトルのうち最も直近のものを返却します

ルールは以下の表記ゆれに対応しています

  • (ガチ)?(エリア|ホコ|ホコバトル|ヤグラ|アサリ)

ルール名のみの場合は今のところ該当なしを返却します(TODO: オープンとチャレンジの両方を返却するようにしたい)。

コマンドの例

(@ikabot3 は適宜読み替えてください)

@ikabot3 ガチマ
@ikabot3 次の次の前の次の次のガチマッチ
@ikabot3 次のガチマ
@ikabot3 次のオープンマッチ
@ikabot3 ガチマアサリ
@ikabot3 次のリグマヤグラ
@ikabot3 次のナワバリバトル
@ikabot3 エリア20
@ikabot3 19 時のガチマッチ
@ikabot3 ガチマ 20
@ikabot3 次のエリア
@ikabot3 次のガチヤグラ

実行例

image image

TODO

  • Support slash commands
  • Remove many debug codes
  • Migrate to logger from printf
  • Unit Test

About

a friendly discord bot to serve Splatoon 3 stage information (JP) / スプラトゥーン 3 のステージ情報を返却する Discord ボット


Languages

Language:Go 99.5%Language:Shell 0.5%