見出し画像

Discordダイスbot「Sasa」

初めまして。Sasaの開発者のひこです。botに関する説明をどこかにまとめようと思い、このnoteを作成することにしました。noteに関しては全くの初心者のため、読みづらい点が多いと思いますが優しく見逃してください。



Sasaの導入方法

他のbotを導入したことがある方も多いと思いますが、まずはSasaをサーバーに招待する方法について説明します。

まずは下記リンクにアクセス。(2024/4/10追記:リンクが変わりました)

リンクを開くとDIscordにログインする画面が開きます。ログイン後次のように招待するサーバーを選ぶ画面が開くので招待したいサーバーをプルダウンから選択して右下の青いボタンを押します。

画像では英語です

「私はbotではありません」の認証が済んだ後、緑色のチェックマークが表示されれば導入完了です。

この画面が出ればブラウザは閉じて大丈夫です

Sasaの使い方(2024/1/19追記)

「bothelp」と打ち込むと簡易的な説明が出てきますが、ここでは詳細にコマンドとその仕様を説明していきます。

コマンド一覧(大文字は数字)
bothelp (all) : 簡単な説明を表示
XdY (Z)  : 最もスタンダードなコマンド,「+」を入れられる
XbY (Z) :バラバラダイス
d66  : 少し特殊なダイスコマンド
XdmY  : エモクロア用ダイス
dd/ささ(Z) ・ss/なな(Z) : クイックダイス
cc/たた(±A)(Z) : CoC7版ダイス
shuffle/ff・choice(X)/cc(X)・choicexX/ccxX :シャッフル/チョイスコマンド
XddY/XbbY :ダイス並び替え

s〇〇 : シークレットダイス

settai/gyakutai : 接待ダイス/虐待ダイス(おまけ機能です)
各ダイス共通でアルファベット、空白は半角/全角問わず使えます。

bothelp(2023/6/2追記)
コマンド送信後にヘルプの1ページ目が送られてきて、その下に1,2,3,全文表示のボタンがつくのでそれを押すと対応したページ番号に変化します。メッセージ送信後30秒の間であればボタンを押し直すことで何度でもページを行き来できます(30秒経つと自動的にボタンが消えます)。今後機能が増えるにつれて4ページ目以降もできるかも。

XdY (Z)
ダイスの王道、1d100をはじめとするダイスが振れるコマンドです。X個のY面サイコロを振り、その出目と合計値(複数のダイスの場合)を返します。出目が1〜5、96〜100の時にはクリティカル/ファンブルも返します。振りたいダイスが1個のときは1を入力せず「d100」のように打ち込んでも反応します。このとき後述の成功/失敗判定は利用できないので注意してください(要望次第ではできるようにするかもです)。また「d66」だけは別の処理になるので、66面ダイスを振りたい時は「1d66」と1を省略せずに打ち込んでください。
Zは成功値で、「1d100 60」のようにYとZにあたる数字の間には半角/全角スペースが必要です。成功/失敗判定はCoCに準拠しているので、成功値60であれば出目が1〜60で成功、61〜100で失敗を返します。(あまり現実的ではありませんが)Xが複数の場合、合計値に対してのみ成功/失敗判定を行います。
(2022/9/10追記)
アップデートで「1d3+1d6」や「1d6+1」のように「+」を絡めてダイスが振れるようになりました。いくつ繋がってても返しますが、ダイスのコマンド以外の文字(ひらがなやアルファベット)が入っていたり、ダイスのコマンドなしの計算式(「1+1」みたいな)の場合は反応しません。「2d3+d2」のように最初の1を省く形のコマンドも併せて使えます。
(2022/9/12追記)
お待たせしました。シノビガミに対応しました。「2d6 5」のように2d6を成功値付きで振るとシノビガミの判定で成功/失敗を返してくれます。致命的失敗/スペシャルも返します(ファンブルは逆凪の時の用語らしいですね)。出目が成功値と同じだった時には成功の扱いになりますが、逆凪の判定などでちょっとややこしいかもしれませんのでご注意ください。
(2022/11/27追記)
判定の反転機能を追加しました。「1d10 05」のように成功値の最初に0をつけると5以上で成功判定になります。2d6だけはもともとシノビガミの判定をするようになっているので0をつけてもつけなくても同じ成功判定をします。
反転している時はbotのメッセージの下端に「反転モード」と出ます。

XbY (Z)
いわゆるバラバラダイスです。dを使ったダイスでは出目の和を返しますが、このコマンドは出目をそのまま返します。例えば「2b6+4b5」と打つと「4,6,2,4,5,1」のように6面ダイス2回分、5面ダイス4回分の合計6回分の出目が出てきます。
dを使ったダイスと同じくZのところには成功値が入れられます。これは成功値以下の出目の個数を数えて成功数として返します。例えば、「2b6+4b5 4」と打つと「2,6,1,5,3,3-->成功数:4」のように返します。エモクロアのダイスの応用版みたいな感じですね。仕様上、空白は成功値の直前にだけ入れるようにしてください。
また、dとbを使った2種類のダイスコマンドを同時に使って「2d6+3b4」などのように送ると「バラバラダイスと通常ダイスが混ざってるで〜」と教えてくれます。

d66
特徴表などで振ることが多いダイスです。このコマンドでは6面ダイスを2個振り、「1,6」であれば「16」のように2つの結果をそのまま2桁の数字として返します。そのため出目は11〜16、21〜26、… 、61〜66の36種類になります。66面ダイスにならないので注意してください。

XdmY
エモクロアTRPG用のダイスコマンドです。ココフォリアのチャパレに合わせてあるのでそちらを扱ったことがある人にはわかりやすいかもしれません。このコマンドではXが振る10面ダイスの数、Yが各10面ダイスの成功値になっています。「3dm6」であれば10面ダイスを3個振って、出目が6以下のダイスがいくつあるか(=成功数)を返します。クリティカルダイス/エラーダイスにも対応しており、1が出ると成功数+2、10が出ると成功数-1になります。
このコマンドに関してはダイスの仕様がややこしいこともありあまりうまく説明できません……実際にbotに振らせて結果を見る方がわかりやすいと思います。

dd/ささ
このbot最大の強み、そして名前の由来でもあるクイックダイスのコマンドです。自卓でもこの機能が一番使われています。
使い方は簡単。「dd」または「ささ」と入力すると1d100を振ります。ddの後に成功値を入力して成功/失敗判定を行うことも可能です(このとき「dd60」のように空白なしで判定してくれます)。もちろんクリティカル/ファンブルも返します。CoCでは頻繁に1d100を使うため、ささっと(ささだけに)ダイスが振れるのは想像上に使いやすいと自負しています。おすすめです。
ちなみにddはPC向け、ささはスマホのテンキー入力向けに設定してあります。

(2022/9/12追記)
・ss/なな
シノビガミの2d6向けのクイックダイスコマンドです。上で紹介したdd/ささと同じように成功値付きでダイスが振れます。もちろん致命的失敗/スペシャルも返しますし、成功/失敗判定もシノビガミに合わせています。「ss」はシノビガミのs、「なな」はbotのアイコンらしい七夕の7/7の「なな」と関連づけてます。使いやすいor使いにくい、どちらでもご意見あればぜひ教えてください!

(2024/1/19追記)
・cc/たた(±A)(Z)
CoC7版向けのダイスコマンドです。1d100を振り、判定をクリティカル/ファンブル/失敗/通常成功/ハード成功/イクストリーム成功で返します。
「cc+1 80」のようにccの直後にプラスマイナスをつけるとボーナスダイス/ペナルティダイスが追加できます。これらのダイスは10の位を追加で振り、有利/不利な出目に変更できる7版特有の処理になります。たとえば「cc+1 80」なら1回追加で10の位が振れるので、出目は「36,76」のようになります(1の位は同じ)。ボーナスダイスなので結果は36が採用になります。ペナルティダイスはその逆ですね。詳しくはルルブ等を参照してください!

(2022/9/19追記)
・shuffle/ff
要素を並び替えるコマンドです。例えば「shuffle A B C」と送るとA~Cをランダムに並び替えて「B,C,A」といったような返答をします。shuffleの直後と各要素の間は空白または「,」(半角カンマ)で区切ってください。shuffleだと長いので「ff」と打っても使えるようにしました。

・choice(X)/cc(X)
要素をランダムに取り出すコマンドです。(X)としてあるのは「choice3」のように直後に数字が入力できるという意味です。例えば「choice A B C」と送るとA~Cのうち一つをランダムに選んで返答します。choiceの直後に数字をつけるとその数だけ取り出します。「choice3 A B C D E」なら「E,B,C」といった感じです。この時同じ要素は取り出されません。このコマンドもshuffleと同じくchoiceの直後と各要素の間は空白または「,」で区切ります。ただし複数取り出す場合のみchoiceとX(数字)の間には何も打たないでください。短縮コマンドは「cc」となっています。また「cc4 いちご もも ドラゴンフルーツ」みたいに取り出す数が要素数より多いとパンダに(ゆるく)怒られます。
(2023/6/27追記)
「ccx4 りんご みかん いちご」のようにchoiceまたはccのあとにxをつけてから数字をつけると重複を許して要素を選べるようになりました。この例だと「りんご,いちご,みかん,いちご」のような結果が返ってきます。

(2023/6/2追記)
・XddY/XbbY
XdY,XbYを振る時、複数のダイスを振った時に出目を大きい順に並び替える機能です。例えば「3dd100」「3bb100」と打つと「10,30,20」という出目だった場合「30,20,10」と返してくれます。

(2023/8/7追記)
s〇〇
シークレットダイスを振ります。「s1d100 50」や「sdd75」のようにダイスのコマンドの頭に「s」を付けることで結果がDMで届きます(DM受信の設定によっては届かないかもしれません)。全体のチャットでは「🎲Secret Dice🎲」と表示され他の人には見えないようになっています。

(2023/9/14追記)
settai/gyakutai
1d100で1〜5の目しか出ない接待ダイス、96〜100の目しか出ない虐待ダイスが振れます。こいつはシークレット対応してないです。


全てのコマンドはDMに送信しても反応するのでシークレットダイスなどで活用してみてください。

後はぼくが好きで使ってる「にゃ〜ん」と「よくできました」に反応する機能があります。コマンドは以上になります。
まだ多くの他システムに対応していない点や、細かい仕様が詰められていないのは自覚していますので、「こうしてほしい!」「こんな機能が欲しい!」などご意見・ご要望がありましたらぜひSasaかぼくのTwitterや質問箱などにてお知らせください。本当に気軽に送ってもらって大丈夫です!
(2024/4/18追記:Sasaのアカウントができました)
Twitter:
@Sasa_Dicebot (botのお知らせ用アカウント)
@Naruhiko_ou (ぼくのアカウント)
↓ 質問箱リンク

サポートサーバーのご紹介(2022/10/12)

この度Sasaのサポートサーバーも開設しました!更新のお知らせをすることや、botに関して直接聞いてもらうだとか、不具合・機能追加要望の受付が主な目的となっています。TRPGに関する話を自由にしてもらってもいいですし、ぼくでよければbotの作り方のアドバイスなんかもできるかもしれません。もちろんこのサーバーに入ってなくてもSasaは100%の機能が使えるので、あくまで興味があれば〜のお話でした。↓リンク

プライバシーについて(2022/10/2追記)

(2022/10/2追記)もう少しきちんとしたプライバシーポリシーのページができました。

以下は上のリンクの内容の補足的なものとして書いてあります。

このbotではチャット内容を読み込んで、入力された文字に「1d100」のようなコマンドが含まれるかを判断しています。そのため、あくまで仕様上ですがbotがいるチャンネルのチャットの内容はbotに認識されています。
botを作っておいてなんですが、botが認識したチャット内容をぼくが確認するということはできません(そんな技術持ってません)。というか興味もありません。どうか安心してこのbotを使ってください。
それでも心配だ、という人は、サーバー内にダイスを振る用の部屋を作り、そこ以外ではbotが会話に参加できないようにする(非公開チャンネルを作るなど)といった対策を取ってもらえれば安全です。
とにかく、このbotを悪用して情報抜き取っちゃうぞ〜wみたいなことは一切ありませんのでご安心ください!

(Sasaが使用不能になる可能性について)
→解決しました!(2022/10/12追記)

最後に何不穏なこと書いてんだって話ですが、これはSasaが(ありがたいことに)たくさんのDiscordサーバーに採用されていった時のお話になります。
Sasaを導入される方は同様の機能を持つとある先輩botのこともご存知かと思います。あのbotが最近(2022年9月時点での最近)仕様変更でダイスを振るのにスラッシュコマンドが必要になったことに関連しています。
詳細は省きますが、Discord APIというbot関連のサービスの規約により、100以上のサーバーに導入されているbotは「1d100」といったコマンドが使えず、スラッシュコマンドのみが利用可能になるという制約があります。つまり、先輩botはこの規約によりスラッシュコマンドだけが使える仕様に変わったということです。
Sasaも導入数が増えていけばいずれこの制限に引っかかります。が、Discord側に掛け合って許可をもらうことができれば、従来通りスラッシュコマンドなしでのbot動作が可能になります(この問い合わせは導入サーバー数が76以上にならないとできないのでしばらくはできませんが……)。問い合わせが可能になり次第頑張ってOKをもらえるよう最大限努力します(そのときはまたnoteの更新があるかと思います)。OKがもらえなかった、あるいはOKをもらう前に100サーバーに到達してしまった場合には機能制限がかかるので、その時にはきちんとお知らせをするつもりです。botの動作が長い期間止まったときにはぼくのnote、またはTwitterを確認してもらえれば幸いです。

(2022/10/2追記)過去に申請している例を見ていると認証マークをもらってからコマンドが使えるようになるまでにかなり時間がかかるかもしれません。一時的に使えなくなる場合にはまたお知らせします。
(2022/10/5追記)10/3に導入数が76サーバー到達&認証マークをもらうことができました!Sasaの名前の右にチェックマークがくっついてます。認証マークの申請と一緒にスラッシュコマンド免除の申請もしてありますが、こちらは今現在返信待ちとなっています。もう少しお待ちください!
スラッシュコマンド免除の許可がもらえるまでは100サーバーが上限に設定されてしまう(たぶん)のでもし先に100サーバーに到達してしまった場合は一時的に新規サーバーへの導入ができなくなってしまうと思います。入れたいサーバーがある方はお早めに!ぼくはもちろん許可が出るまで頑張ります。

(2022/10/12追記)この辺全て無事申請が通りました!これからは100以上のサーバーでSasaをスラッシュコマンドなしで利用していただくことができます!この追記を書いている時点で導入数97サーバー、ギリギリ間に合ってよかったです。

おわりに

Sasaの更新記録は下のリンクでつけていく予定です。時々覗いてみてね。

このbotはbot開発初心者が色んなブログとかをみながら試行錯誤して作ったbotです。まだまだ不具合や至らない点が多々あると思いますのでご意見・ご要望があればお気軽に質問箱やTwitterのDMにてご相談ください。皆様の忌憚のないご意見がよりよいbotを作っていく原動力です。では。

P.S.ご支援のお願い

4/9にサーバー安定化のためにレンタルサーバーを使った運営方式に移行しました。そのため維持費がちまちまと発生して趣味の範囲ではなかなかしんどい……のでFANBOXでご支援を受け付けるようにしました。ちょっとした小話が見られるかも。(ダイスは全機能無料で使っていただけます) なにとぞ〜

FAQ:ダイス結果が見えない時

ときどき「Sasaの返す結果が見えない!」という声が聞こえるのでここに対処法を書いておきます!

こんな感じで結果が見えない…

Discordの設定を開き、アプリの設定というグループの中にある「テキスト・画像(スマホだとテキスト・メディア)」の項目を選びます。
さらにそこを下にスクロールしていくと「埋め込み画像を表示し、チャットに投稿された……」という項目があるのでこの項目をONにします

PCだとこんな感じです

これで見えなかった過去のダイス結果も含め見られるようになります!やった!

FAQ:返信が来ない時

2024/4/10以前にSasaを導入している場合、チャンネル権限が不足してメッセージを返せないことがあります。その時にはSasaを一度サーバーからキックして再度導入し直すか、以下の手順でSasaのロールを編集してください。
サーバーの「設定(PC版では設定)」→「ロール」→「Sasa」を選択→「権限」を選択(PC版では下のようにタブ分けされています)
ずらっと並んだ項目の中から

  • 一番上の「チャンネルを見る」

  • テキストチャンネル権限の中の「メッセージを送信」「スレッドでメッセージを送信」「埋め込みリンク」

の合計4項目を下の画像のように有効にして、最後に「変更を保存する」を押して編集を完了します。

これで正しくメッセージが送られるはずです!

FAQ:入れ直しても権限が足りない時

Sasaを招待しなおしても権限が足りないと言われる場合、チャンネル側の権限が足りていないことが原因だと思われます。

まずSasaが動かないチャンネルの「チャンネルの編集」の項目を開きます(スマホはチャンネル名を長押し→設定)

そこから「権限」→スマホのみ「@everyone」の項目を選択すると下のような設定画面が開きます。この画面で「メッセージを送信」「スレッドでメッセージを送信」「埋め込みリンク」「メッセージの管理」の項目が「/」または「✅」になるように変更して保存すると正しくメッセージが送られるようになるはずです!

目的の権限が「×」以外になっていればOK

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