自分のBotを"おでかけ"させたい話

流行りには乗るスタイル(とは言いつつ記事公開は最高に遅れてしまった)

タイトルの元ネタ

というわけで、今のBotの手持ち状況を整理するだけです。


1.概要

今、手持ちにあるBotは以下の通りです。

・藤島慈

ミリシタのボーダー予想、歌詞表示、再生できる楽曲の検索ができるようになっています。後は自鯖のチャットにちょっかいも出す。色々できるBotです。

・上田麗奈

ミリオン関連のクイズを出しまくります。詳細は後述

・乙宗梢

私の手持ちローカルにある音楽ファイルを再生します。実はそれだけなので最弱なのかも知れない(自分が作ったBotじゃないしな)
ちなみに自分のプラベ鯖に同様の機能の「和氣あず未」を入れました。

・立花日菜(ウェブフック 現在停止中)

先日(2月下旬)のイベントで1位のペースメーカーとして使用しました。
今後使用の予定は微妙ですが、とりあえずいる。
ウェブフックなので、他鯖への移植は容易

・種田梨沙(ウェブフック 稼働中だけどじきに停止予定)

ラウンジランキング1位の差分確認しています。
加えて、先日藤島慈に実装した機能を30分おきに出力できるようにしました。
こういう時間おきに差分を表示するのはすぐに作れるし、他鯖に出力が容易です。
SunRiserイベントのときに結構エラーが出て出力が停止することが多くて、「あぁこれ使えないな」と判断して、エラーが解消するまでは同機能が藤島慈に実装しているので逐一たたいてもらうようにしてます

普通に5つあるの草。

2.構成

これをまとめたかった。今自分の環境はどうなっているのかを整理しました。

適当な図面

わかりやすさを極限まで消しさったので、こんな図になりました。こんなの仕事で出したら上司にバチ切れされそう。

こうやって書くとシンプルなのか複雑なのかわかりませんね。

まぁ商用展開をする予定がないので、こんなもんでいいと思っています。
実際VSCodeとか適当にPythonコード管理してるし。実際ならGithubとか使用しないとな~と思いつつ完全放棄しています。

自分の本業はPythonをゴリゴリ書く人間ではなくて、インフラおじさんなので、Botをsystemdとかで管理とかはしているけど、コード管理とかはひどいですね。まぁええか()

3.Botの詳細(主要機能だけ)

藤島慈

/search_music

乙宗梢で再生できる楽曲を検索するコマンドです。
部分検索で検索してくれるので、例えば「銀の」って入れたらうちの鯖だと「銀のテーブル木苺ジャム」と「銀の龍の背に乗って」が出力されます。


出力例

なんでこれを入れているかと言えば、乙宗梢の楽曲再生で、再生時に楽曲名を指定するときに「正しい名前」じゃないと入ってくれないので、それのサポートという感じです。

許しがたいですが、「思い出はクリアスカイ」ってコマンド入れても再生されないので、それのサポートと言う感じです。

/search_lyric /open_lyric

/search_lyricのほうが(基本的に)ミリオンの楽曲の歌詞を表示するための部分検索で、実際に表示するときは/open_lyricを使用する感じです。

あんまり使用頻度がなくてさみしい。

/album /artist

指定された楽曲名(乙宗梢の楽曲指定と同じで完全一致)のアーティスト名と収録されているアルバム名の情報が「ある場合」は出力されます。

基本的にはされません。音楽ファイルに情報いれてないから

/border_compare

現在開催中のイベントボーダーを読み込んで、開催中のイベント形式と同形式かつ同時間の他イベントの同時刻帯でどれくらいのボーダーptだったのかを比較して出力します。

例えば、先日開催のトワラーは174時間のチーム(テール)形式なので、他の174時間のテールとかチームとかタイム形式のボーダーと比較するようにしています。

出力例

種田梨沙のWebhookだとこれが自動で30分おきに出力されていたのですが、いかんせんエラーを吐きまくっているので当面やる予定はありません。
⇛原因特定するの面倒だから

これを使用して、「大体ボーダーどのあたりに着地するのかな~」と検討するために使用します。

/highscore_predict

自分が過去にしていたハイスコアのボーダー予想のノウハウを入れ込んだ結構渾身のコマンドです。

ハイスコアの予想って結局時期ごとに編成が変わっていって基本的にボーダーのスコアは高くなっているかと思います。

だから、イベントポイントのように過去の結果を普通に流用できません。
だって100位が120万の時代もあったけど、今は150万は当たり前で、それを比較に使用するのは困難です。

注目したのは「上昇率」です。

「最終ボーダーから見てこの時間帯はだいたい何%あるか」というのを見ています。

先ほどの/border_compareと同様に同形式と同時間のイベントの過去のハイスコアポイント推移を読み取って、だいたいこの時間は最終の95%あるなぁ。。。と見たら現在のイベントのハイスコアの値が仮に最終ボーダーの95%と仮定したら最終はこんな感じだよ~と出力する感じです。

出力例

そんな感じで予想の最大値、最小値、平均値、中央値を出力します。

もちろん時間が終了に近いほど精度は高くなります。

これももっと利用して欲しいなぁ。。。

/theater_needjewel /tour_needjewel /team_needjewel

シアター、ツアー、チーム形式のポイントに対しての必要ジュエル数を計算します。

まぁミリシタ関連のBot作ったら簡単だしまず実装したいBotですよね。

出力例

スタミナも当然事前に指定できます。未指定だと240です。

乙宗梢

詳細はこちらを御覧ください。私が作成したBotではないので、

https://github.com/Cosgy-Dev/JMusicBot-JP

基本的にうちの鯖では、藤島慈の/search_musicで楽曲名を出して、それを
/play playlistから指定して入れたら楽曲が再生される仕組みとなっています。

それ以外にも現在再生中の楽曲の表示とか、次の再生予定楽曲とか、スキップとかできます。

上田麗奈

過去に自鯖で書いた説明書を補足して書きます。
基本的にはクイズ出しまくるBotです。名前はなんとな~く決めた実は仮名です。

/millionlyric_quiz_random

ミリオンの楽曲の歌詞がランダムで指定した行数だけ表示されます。
コマンド入力時にline_numに指定した値の行数だけランダムに歌詞が表示されます。
7秒後に答えの楽曲が表示されます

正解の楽曲はネタバレ表示になるので、7秒以上考えたい場合も答えが見えない仕様になっています。


出力例

/millionlyric_quiz_normal

ミリオンの楽曲の歌詞が順番で指定した行数だけ表示されます。
コマンド入力時にline_numに指定した値の行数だけ順番に歌詞が表示されます。
7秒後に答えの楽曲が表示されます

要するにさっきのrandomが歌詞のどこかランダムで表示するのに対してこっちは順番に連続で表示されるという感じです。

出力例

/millionlyric_quiz_plus

ミリオンの楽曲の歌詞が順番で指定した行数だけ表示されますが、指定した行数表示の後、空欄になっていて、その後また指定した行数だけ歌詞が表示されます。 なので楽曲名と空欄に入る歌詞を答えてください。 コマンド入力時にline_numに指定した値の行数だけ順番に歌詞が表示されます。

要するに、歌詞の楽曲も答えるけど、穴開きの部分の歌詞も答えるクイズです。
僕は歌詞クイズが苦手なので全くできないし、全体としても正解率はかなり低い印象です。

出力例


/millionimage_quiz

ミリシタ実装のSSRカードの一部が表示されているのでそのカードを答えます。 circle_numで見える円の数を指定します。最大4つです。

出力例

先日のアップデートで衣装名とか覚醒前後のセリフとか表示するようにしました。画像切れてますが、下の方に正解のSSRカードも表示されます。

/millionimage_quiz_sr

上の一部表示クイズのSRカード版です。 同様にcircle_numで見える円の数を指定します。最大4つです。

SSRだとまぁわかるんですけど、SRになると強烈に難易度があがるので、正解を出すのは難しいですね。

出力例

/millionevent_quiz

上の一部表示クイズのイベントキービジュで回答する版です。 同様にcircle_numで見える円の数を指定します。最大4つです。

イベントキービジュは数が少ないのでそこまで難しくありません。
先日のアップデートで上位カードと累積カード情報も出すようにしました。

出力例

/milliontrigger_quiz

ミリシタのイベントのトリガー名からイベント名を答えるクイズです

マニアックなクイズだなぁって思います(作成者は語る)

出力例

/millioneventstart_quiz

ミリシタのイベントの前後関係から特定のイベント名を答えるクイズです。

私がちゃんとミリシタやりはじめたとき(なんどでも笑おう)から後だと余裕なのですが、やっていないと正直わからないぜクイズです。

出力例


/millioneventtrig_quiz

ミリシタのイベントのトリガー名の前後関係から特定のイベント名を答えるクイズです。(超高難易度)

上記の2つのMIXクイズです。難しすぎるクイズ。

出力例

(あぁこれはわかったわ)

/million_costume_quiz 

ミリシタの衣装画像と説明文が表示されるので、そこからカード名とアイドルを答えるクイズです quiz_typeは1だとSSRのみ、2だとSRのみ、3だとSSRかSRのどっちかが出題されます。

要するに衣装画像からカード名とかアイドルを答えるクイズです。
これをやるとマスピとかプラチナスターピース消えるから良くない()

出力例

出力例には出ていませんが、画像がある場合は覚醒前後のカード、4凸衣装と5凸衣装の画像も表示するようにしています。


/million_flavor_quiz 

ミリシタのカードの覚醒前セリフと覚醒後セリフと覚醒時セリフが表示されるので、そこからカード名とアイドルを答えるクイズです quiz_typeは1だとSSRのみ、2だとSRかRのみ、3だとSSRかSRかRのどっちかが出題されます。

要するに私はあんまり見ないあのセリフ部分のクイズですね。

出力例


/get_lounge_quiz

過去のラウンジの戦績からラウンジ名を答えるクイズで情報をもらうコマンドです。
後述の/reset_lounge_quizでとあるラウンジ(まぁまぁイベランで有名ラウンジ)がセットされるので、このコマンドを利用してイベント名を入れたらそのイベントの成績が表示されるのでそこから/answer_lounge_quizでラウンジ名を答えるクイズです。


出力例(Legend Girls!!を引数に入力)

/get_lounge_quiz_highest

上記の情報もらうやつのそのラウンジの最高成績を表示するコマンドです。
1位複数回の場合はランダムで1つが表示されます。

出力例


/answer_lounge_quiz


上記のラウンジクイズの自分の回答を入れるコマンドです。 このラウンジ名は完全一致じゃないと正解しないで、名前が不安な場合は/search_loungeを使用してください。

正解すると、答えリセットされます。

出力例

/search_lounge


ラウンジ名を検索します。ただし出力されるのは上記のクイズで出題されるラウンジだけです。部分一致なので、 ラウンジ名の一部が一致したら出力結果にラウンジ名が出力されます。

出力例(引数に「春香」を指定した場合

/reset_lounge_quiz


上記のラウンジクイズの正解をリセットします。 最初のラウンジクイズ出題時(サーバを再起動する毎週月曜日以降などのBot再起動時)にもこれを入力する必要があります。


出力例

今後(実装したいこととか)

ダラダラといろいろ書いてきましたが、

これまで、イントロクイズとか、ラントロとかは自分の手持ちのPythonでいるときだけできるようになっていたのですが、Botなどでは実装できないと思っていて、見送っていました。

実装を見送っていた理由は「ラントロができないから」という理由でした。

ただ、先日ChatGPTに聞いたら「ラントロもこれならできるかもやで」って言われたので、ちょっとお試しで書いてみたいと思います。

後は、スポーツ観戦が大好きおじさん、プロ野球とかMLBのAPI情報を取得して色々できるようになりたいな~と思ったりしています。

ミリシタのSSRや報酬カード情報とかもこれで簡単に整理したいですね。
今まではエクセルで管理していたのですが、よく考えたらこれでなんとかなりそうだな~って思いました。

アイドルを指定したら、過去の報酬カードとSSRカード情報出せたら理想形ってことで

また、イベントの比較グラフ出力もしたいなと思っています。
おそらく最後の夢です。

他にミリオンの楽曲だけですが、過去に指定の楽曲がリアルライブで何回歌唱されたかを提供してくださるAPIがあるのでそれも実装したいな~と思ったりですね。

加えて、本業のインフラまわりも安定稼働できるように色々手を加えたいですね。

とりあえず週次で再起動したりとか、それが終わったら自動でBotが上がるようにしました。それくらいはできます。

(やりたいこと尽きないな。。。)

今後(募集)

⇛誰か俺のBotを置かせてくれ!!!!!

そういうことです。

主な要件

・必須要件は特にありませんが、積極的にコマンドとかを叩いてくださるサーバが嬉しい
・「こんなことはできないの?」とか提案くれたらちょっと嬉しい(でも基本私の技術ではできないので許して)
無料です。当たり前です。
サーバの特権(管理者権限)だけください。そうしないとBotの管理はできないので(もちろん悪用はしませんので)
一部Botだけいれることも可能です。ただ乙宗梢(音楽再生)を利用したい場合は強制的に藤島慈も入ることになります。そうしないと音楽が再生できないので。
アプリの名称は変えられます。別に上田麗奈とか乙宗梢じゃなくてもOKです。

管理の都合上、1サーバだけ入れられたらいいなぁ~と思っています。

matsurihi.meさん、API利用大変お世話になっております。
今後ともよろしくお願いします。

この記事が気に入ったらサポートをしてみませんか?