お祭りクランに参加したらプログラミングしてた話

普段はREVOLUTIONというところにいますが、3月クラバトはゆず庵という単月のお祭りクランでクラバトをやっていました。
当初150位目標で集まったのですが、途中で報酬が変わったこともあり100位目標に変更、結果は63位と上々の出来でした。

画像1

私はサブリとして参加していてクラン運営上のお話も色々あるのですが、今回は凸管理botを自作運用していたのでそっちの話を書こうかなと思います。bot自作してみようかなーって思ったりしてる人の参考になればいいなーと思いつつ大した話も書けないのでまぁちょっとしたお気持ち表明くらいの気持ちで読んでいただければ。

1. こゆbotって何?

クラマスのこゆずにちなんで名称は「こゆbot」、いわゆる凸管理botで一般的な機能は割と網羅してる(はずの)botです。

機能としては、凸希望登録、凸宣言受付、ダメージ報告受付、凸完了受付、限界時間受付、タスキル登録、TLを持越し秒数に応じて書き換え、凸消化ペースなどの統計表示、ダイスを振ったり、その他お遊び機能搭載っていう感じです。

おそらく特徴的なのは限界時間登録で、活動限界を登録しておくとダメージ報告したときに(○時まで)っていうのが表示されるので進行の人がそれを見てリミット近いから先に通そ〜とかそんなんができます。

凸報告

(一応黒く塗っていますが名前の後ろは報告したダメージが入っています)

機能を全部説明してると長くなるので割愛します() まぁ一般的な凸管理botです。
興味ある人はゆず庵の誰かに聞いてみてね

2. 作るときに気をつけたこと

どういうクラバトルールにするかとかは運営班で話し合っていましたがbotの細かい仕様は全部私の方で作っています。(技術的バックグラウンドがないと仕様に落とすとかも難しいので)
今回のクランはクラマスこゆずがやりたいクラバトをやるっていうのが前提にあったのでそれにどういうbotがあればいいのかなーっていうのを考えながら検討していました。またクランメンバーが普段クラバトをやってる順位帯が上はSSS帯から下は4000位とかまでとバラバラでbotの操作も当然ながら、凸宣言ってなに〜?みたいな人もいる状態だったので、以下のことをとても意識して作っていました。
・操作をできるだけ簡単に
・必要なエラーハンドリングはしっかりと
・楽しんでbotを触れるようにできるだけお遊び要素を入れる

・操作をできるだけ簡単に
bot操作に慣れていない人が多いので、できるだけ操作は直感的、かつやれることは少なめにするように意識していました。
覚えることは極力減らしたかったので、例えば、凸宣言や、通したあとの操作はスタンプのみで行えるようにするなどの工夫をしていました。

あとは例えば持越しに関する機能とか事前に色々機能案も出ていたのですが、botに不慣れな人がいることも考慮して必要最低限の機能のみ実装することにしました。

・必要なエラーハンドリングはしっかりと
例えば、凸宣言してないのにダメージ報告しようとしたら怒られるとかそういう話です。
できるだけ正しい使い方をしてもらえるようにありそうなパターンは想定してエラーのメッセージを出すようにしています。

・楽しんでbotを触れるようにできるだけお遊び要素を入れる
botから出力されるメッセージはあまりお硬くなく馴染みやすいように色々考えていれています。
例えば凸希望登録の際には、どのボスか、ダメージはいくつか、パーティ種別は何か(物理/魔法/ニャル)を登録する必要がありますが、入力項目が足りなかったりするとこんな感じのメッセージが出たりします。

スクリーンショット 2021-04-03 22.45.13

(クラマスがぽんこつキャラなのでその辺の身内ノリを考慮したメッセージ)

他にも、こゆずコマンドやにゃんコマンド、エラーコマンドで馬車馬担当のSさんを呼び出したり気軽にbotを触れるようにしています。

スクリーンショット 2021-04-04 15.34.35

(これはエラーコマンドで呼び出されるSさん)

3. 実際に運用してみて

入力ミスに備えてキャンセルコマンドとかも用意していたのですが、ありがたいことにほとんど出番はありませんでした。
あと、運営班でテスト用サーバ作って結構テストしてもらってたのもあってクラバト期間中に目立った不具合もなく終えられたのがよかったですね。
やっぱりテスト大事。

実際に本番になって気付いた技術上の問題としては、凸状況一覧でEmbedを使ってリスト化していたけど、追加できるFieldが25個上限で30人分表示できなかったってことくらいでした。(それもクラバト始まる前に気付いたので2つに投稿を分けることで回避し無事クラバト中は問題なく表示できました)

4. 技術的なお話

今回のbotの技術スタックとしては
CentOS 7.6
Python 3.8.6
MySQL 8.0.23
で作っていました。最初DB使わずにスプシで管理しようかなーと思って試しにやってみましたがまぁまぁ速度が遅くなるのとやっぱりセル操作していくのは面倒すぎたので結局MySQLを使うことにしました。集計とかやるのもMySQLの方がやりやすいですしね、最初からスプシ試さずDB使っときゃよかったなーって思いました。

5. 最後に

仕様決めるところから実装するところまで一人でやりましたが、運営班のみなさんに色々テスト手伝ってもらって不具合を洗い出せたのは大きかったなーって感じがしました。実際にbot作るときにはやっぱり一人で全部やるよりもテストはいろんな人に手伝ってもらうのがいいですね、あーそういう使い方しちゃう?っていうのもでてくるので。
とは言え終わってみると色々直したいなーとかもっとお遊び機能入れたいなーとかはでてきているので次の機会があればもっとバージョンアップしたいですね。

最後に、私はフリーランスでシステムを作るお仕事をすることがありますが実際ボリューム的にも仕事なら○○万はとるなーってくらいの大変さではあるのでクランにbot作ってくれてる人がいたら最大限感謝の気持ちは伝えようね!!!!(お金が欲しくてやってるわけじゃないし、まぁ私は17歳JKなんですけどね)

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