TestingBot（仮）コマンドリスト

# はじめに
C（◆BBB..B....）と申す者です。この度、TestingBot（仮称）というBotを書きましたのでコマンドリストを公開します。良ければお役立てください。

# Botの概要
```text:information
Bot名 : TestingBot（仮称）
開発者 : C（◆BBB..B....）
開発目的 : 開発者自身のPythonの技術向上、村管理の自動化
開発言語 : Python
主要機能 - イエローカード、レッドカード機能による自動蹴り
　　　　 - NGワード機能によるイエローカード自動付与
　　　　 - リスト形式での複数人同時蹴り
　　　　 - トリップ⇔名前の相互参照
　　　　 - （一部のオペレータのみ）HTML改変によるコマンド補助
　　　　 - 発言数によるレベル・ランク機能
　　　　 - 4時間おきの自動建て直し
　　　　 - 村建て、畳みのスケジュール設定
```

# コマンドリストのみかた
コマンドリストは、以下のような形で提供されます。
- - - 
### #admin
**-基本形**
`#admin [add/rem] [str:trip]`
**-用法**
管理者権限に関するコマンドです。addで追加、remで削除を行います。
- - - 
「基本形」はコマンドを使用する際の基本的な形を示しています。この項では以下の表示が使われる場合があります。
- `[str:String]`
strはstringの略で、文字列を表します。`[str:String]`はStringという意味の文字列を引数として指定することを意味します。
```text:Example
[str:名前] : 名前を文字列として入力する
```
- `[int:Number]`
intはintegerの略で、文字列を表します。`[int:Number]`はNumberという意味の整数値を引数として指定することを意味します。
```text:Example
[int:人数] : 人数を整数値として入力する
```
- `[list:a1,a2...]`
listはリストを表します。`[list:a1,a2...]`はaという意味の文字列のリストを引数として指定することを意味します。
```text:Example
[list:プレイヤー1,プレイヤー2...] : 複数人のプレイヤーをカンマ区切りのリストとして入力する
```
- `[example1/example2]`
[  ]内の/で区切られている文字列のうちいずれかを引数として指定することを意味します。
```text:Example
[add/rem] : addもしくはremを入力する
```
「用法」ではそのコマンドの使用法について説明します。


また、 **権限によって使用できるコマンドが決まっています。** 権限は管理者（Admin Lv.2）が付与/除去できます。
```text:Example
Admin Lv.0　-通常の状態。一般コマンドが実行可能。
Admin Lv.1　-オペレータ。一般コマンドに加え管理コマンドが実行可能。
Admin Lv.2　-管理者。すべてのコマンドを実行可能。
```
# コマンドリスト
## 通常コマンド（Admin Lv.0）
### #mycard
**-基本形**
`#mycard`
**-用法**
自分の登録データを確認できます。権限レベル、イエローカード所持数、レッドカード所持数を返します。
- - - 
### #help
**-基本形**
`#help`
**-用法**
このページのURLを返します。
- - - 
### #login
**-基本形**
`#login`
**-用法**
ログイン日数を記録します。1日1回です。多くログインするといいことがあるかも...？
- - - 
### #dragon
**-基本形**
`#dragon`
**-用法**
「がおー！」と返してくれます。がおー！
- - - 
### #musuka
**-基本形**
`#musuka`
**-用法**
ムスカ大佐語録の内容をランダムで返します。ふざけて即興で実装しました。
- - -
### #penalty
**-基本形**
`#penalty`
**-用法**
罰ゲームに使えるセリフをランダムで囁きで返します。づつう君のようぼうで実装しました。
- - -
### #genso
 **-基本形**
 `#genso`
 **-用法**
 地球の表面に存在する元素を囁きで返します。確率は存在割合と等しいです。
- - -
### #janken
**-基本形**
`#janken [グー/チョキ/パー]`
**-用法**
Botとじゃんけんができます。異常に強いみたいです（当社比）。
- - -
### #dice
**-基本形**
`#dice [str:ndm（n,mは整数）]`
**-用法**
m面のダイスをn個振ります。普通のさいころを振りたい場合は1d6です。
## 発言レベル機能関連（通常コマンド）
### 発言レベル機能について
発言レベル機能とは、Botが起動している間の村での発言数・発言文字数を独自の計算機構によりXPに変換、XPの数値に応じて発言レベルが上がり、そのランキング等を競うことができる機能です。（詳しくはDiscordBotのMee6を参照）
なお、XPの使い道は特にありません。（考え中）
### #level
**-基本形**
`#level [str:trip]`
**-用法**
引数を何も指定していない場合（`#level`単体で使用した場合）はコマンド使用者の発言レベル、XP、ランキングを囁きで返します。
引数でトリップを指定した場合そのトリップの発言レベル、XP、ランキングを囁きで返します。
- - - 
 ### #ranking
**-基本形**
`#ranking`
**-用法**
発言レベルのランキングを1位から3位まで表示します。

## トリップ自動検索機能関連（通常コマンド）
### トリップ自動検索機能について
トリップ自動検索機能は、2024年8月ごろに実装された機能で、トリップ依頼と安全な受け渡しを自動化させたものです。
検索速度は毎秒1.2Gtripcodes程度で、具体的には6文字完全一致のトリップを平均40秒程度でヒットさせることができます。
受け渡しについては、私が以前開発したTTFT（Trip Transfer Facilitation Tool）を用い、安全かつ円滑に受け渡しができるようになっています。
以下に、機能の概要を記載します。
```text:トリップ自動検索機能
開発者 　: C（◆BBB..B....）
開発目的 : 高速なトリップ検索の一般開放、円滑な受け渡しの技術研究
開発言語 : Python、Google Firebase
検索速度 : 1.2Gtripcodes/s（公称、平均）
対応酉　 : 10桁トリップ、通常キー空間のみ
検索時間 : 6文字→40秒～1分程度
　　　　   7文字→20分～40分程度
　　　　   8文字以上→1時間～数日、運によっては数年以上
受け渡し : TTFTを使用（パスワード認証による安全性担保）
　　　　   村不在時は後日まとめて通知可能
```
次に、コマンドについて記載します。
- - -
### #trip
**-基本形**
`#trip [str:依頼したい文字] [str:整理番号/依頼番号/受付番号]`
**-用法**
トリップ検索の依頼を実行します。整理番号は、[こちらのサイト](https://script.google.com/macros/s/AKfycbwbahelhAmolrJuWJ9N534OxdIVaT74zpXpzXPhGwqyWtgd2U0qyGeynGKS1e-WJJMD_Q/exec?mode=register)にパスワードを登録することで発行できます。
依頼可能なトリップは6～9文字の、「英数字と./」のみを含む文字列です。
また、通常プレイヤー（Admin Lv.0）は、2つ以上のトリップを同時に依頼することはできません。
トリップがヒットした場合は、村に以下のような通知が投稿されます。
```
[AutoTripBot] （プレイヤー名）が依頼したトリップ（依頼番号: ******）がヒットしました。
ヒットしたトリップ: ◆**********
こちらのURLから受取をお願いします。→https://x.gd/Y2fI1
```
この通知が届いたら、指定されたURLのリンク先にて依頼番号とパスワードを入力し、受け取りをすることができます。
また、入室していない時にヒットしたトリップについてはトリップストアに一時的に格納されます。それらのトリップは、再入室時に「#untrip」コマンド（後述）を実行することにより一覧形式で確認可能です。
- - -
### #untrip
**-基本形**
`#untrip`
**-用法**
村に入っていない時にヒットしたトリップの一覧を返します。
依頼した時と同じトリップをつけている場合のみ正常に実行されます。
一度実行するとトリップストアから記録が消されるため、注意が必要です。
記録を持っている人が実行すると以下のような形でデータが返されます。
```
[TestingBot] 通知待ちのトリップが*件見つかりました:
◆**********（整理番号: ******）
こちらのURLから受取をお願いします。→https://x.gd/Y2fI1
```
- - -
### #cctrip
**-基本形**
`#cctrip [str:受付番号/依頼番号/整理番号]`
**-用法**
現在なされている依頼をキャンセルします。
※依頼した時と同じトリップかつ、固定トリップの場合のみ
## オペレータコマンド（Admin Lv.1）
### #cpu
**-基本形**
`#cpu`
**-用法**
CPUを1人追加します。
- - - 
### #clog
**-基本形**
`#clog`
**-用法**
ログ流しを行います。
- - - 
### #test
**-基本形**
`#test`
**-用法**
テスト用コマンドです。コマンド使用者の名前とトリップ、権限レベルを返します。
- - - 
### #info
**-基本形**
`#info [str:trip]`
`#info all [str:名前]`
**-用法**
プレイヤーをトリップで指定して情報を取得します。
プレイヤーがこれまで使用した名前、プレイヤーの権限レベル、イエローカード所持数、レッドカード所持数を返します。
データが多すぎる場合は1部のみを返します。その場合、`#infob all`を使用することで全ての情報を囁きで返します。
- - - 
### #infobn
**-基本形**
`#infobn [str:名前]`
`#infobn all [str:名前]`
**-用法**
プレイヤーを名前で指定して情報を取得します。
プレイヤーがこれまで使用したトリップ、プレイヤーの権限レベル、イエローカード所持数、レッドカード所持数を返します。
データが多すぎる場合は1部のみを返します。その場合、`#infobn all`を使用することで全ての情報を囁きで返します。
- - - 
### #kick
**-基本形**
`#kick [str:名前]`
**-用法**
プレイヤーを名前で指定してキックします。
- - -
### #lkick
**-基本形**
`#lkick [list:プレイヤー1,プレイヤー2...]`
**-用法**
名前のリスト形式でプレイヤーを指定して全自動でキックできます。何気に今までのどのBotも搭載していない機能（のはず）です。
- - -
### #ycard
**-基本形**
`#ycard [add/rem] [str:trip]`
**-用法**
イエローカードに関するコマンドです。addで付与、remで除去を行います。すでに付与済みの場合自動的にレッドカードを付与します。
- - -
### #rcard
**-基本形**
`#rcard [add/rem] [str:trip]`
**-用法**
レッドカードに関するコマンドです。addで付与、remで除去を行います。除去する場合自動的にイエローカードを付与します。
- - -
### #guard
**-基本形**
`#guard [add/rem] [str:trip]`
**-用法**
Guardリストに関するコマンドです。リストに追加されたトリップの所持者を管理者以外がキックできなくなります。addで追加、remで削除を行います。
- - -
### #ng
**-基本形**
`#ng [name/word] [add/rem] [str:word]`
**-用法**
nameを指定した場合はプレイヤー名のNGワード、wordを指定した場合はメッセージのNGワードを操作します。
addで追加、remで除去を行います。
- - -
### #maxlen
**-基本形**
`#maxlen [/set] [int:length]`
**-用法**
引数を何も指定していない場合（`#maxlen`単体で使用した場合）は最大文字数を返します。
引数で`set`を指定した場合第2引数を最大文字数に設定します。
- - -
### #time
**-基本形**
`#time`
**-用法**
現在時刻、自動建て直し予定時刻、自動村建て・畳みスケジュール時刻を表示します。
- - -
### #stop
**-基本形**
`#stop`
**-用法**
村の自動建て直しを中断します。
## 管理者コマンド（Admin Lv.2）
### #admin
**-基本形**
`#admin [add/rem] [str:trip]`
**-用法**
管理者権限に関するコマンドです。addで追加、remで削除を行います。
- - -
### #end
**-基本形**
`#end`
**-用法**
データをセーブし、Botを終了します。
- - - 
### #kansen
**-基本形**
`#kansen [list:プレイヤー1,プレイヤー2...]`
**-用法**
名前のリスト形式でプレイヤーを指定して観戦に回します。
- - -
### #zusa
**-基本形**
`#zusa [list:プレイヤー1,プレイヤー2...]`
**-用法**
名前のリスト形式でプレイヤーを指定して参戦者にします。
- - -
### #color
**-基本形**
`#color`
**-用法**
色変えを行います。
- - -
### #setjob
**-基本形**
`#setjob`
**-用法**
配役を雑談配役に設定します。
- - -
 **残りは管理者用コマンドのため、公開しません。使用時に「これなーに？」って聞いてくれればお教えします！**