ローコストでつくる discord bot
ローコストでつくる discord bot
スプラトゥーン3まわりでやってる人が多くて、いろんなクラスタの人たちと遊べて楽しい
ゲームのウデマエの方はてんでなんだけど集まってワイワイゲームするのがシンプルに楽しいので、エンジョイな人たちとスムーズ楽しめるようになんらかのサポートツールを作ってみようかなと
...というのは建前で、
discord の新しい API を触ってみたかったのでいろいろ試してみたの巻
discord のこれまでの bot は listen するサーバがどっかに常時建ってないといけないので面倒だったが、ある程度妥協すれば bot っぽいものを作れるようになっていた
アプリケーションを作成して、OAuth2 URL Generator から applications.commands
にだけチェックをいれた URL を作成して admin の権限をもってるサーバに放り込む
アプリケーションの intersection の endpoint の登録をすると ping が飛んでくるので pong してやらないと登録されなかった
deno deploy の env に discord の public key を登録しておく
グローバルに登録ということもできるらしいが、時間がかかったりすることもあるらしい
すると、メッセージのところで右クリックした際に アプリ
ってセクションのところに任意のコマンドを生やすことができる
今回は各種バトルの今と次のマップを返すコマンドをつくる
まずはコマンドが実行されたらレスポンスを返す部分で
ApplicationCommand = 2 でリクエストが飛んでくるので適切な json を返してやるとそれがメッセージとして表示される仕組み
なるほどね
レスポンスに components ってのをつけてやるとボタンやセレクトメニュー、テキスト入力なんかを返せる
ので、最初は select を2つ返してそれぞれほしい組み合わせを選ぶ式にしてみたが、interaction として返ってくるのは選択されたソレだけなので選択されてない方が何選択されているのかがわからない
どうにかできないものかと調べてみたのだが、調べた限りでは intersection を cache として保存しておいて時限で突合するみたいな仕組みだったのでなんだかなと
まあボタン6コなら許容だろう...
各ボタンに custom_id
を指定しておいて、それを基に spla3 API を叩いて情報を返す
レスポンスには embeds
というフィールドがあって、ここに画像やらなんやら仕込める
イイ感じ
ちなみに地図情報は手作業で登録していってここが一番だるかった10マップx5ルールである...
でも毎回右クリックして実行するのもだるいなということに気付いたので
レスポンスには components も同居できるのでアンサーにもボタンを仕込んでやれば(これも midjourney 方式)楽チンになった