generated at
ぼくがかんがえた最強のDiscord Bot作りました!

wikiもけっこうくわしく書きました!(たぶん...)

wikiにある通り、下記の招待リンクから、discordサーバーに参加すれば試せます!
Issueとか書くまでもないようなこととかあれば書き込んでください...

機能
通常用カテゴリ(messagecog.pyで実装)
/group
メンバー数を指定:指定されたメンバー数になるように、適当な数のチームに分ける
コマンド実行者がボイスチャンネルに接続している必要アリ
サーバーに複数のボイスチャンネルがある必要アリ
Zoomのブレイクアウトルーム機能からインスパイアされ、作成したもの
/team チーム数指定:メンバー数が均等になるよう、指定された数に分ける
コマンド実行者がボイスチャンネルに接続している必要アリ
サーバーに複数のボイスチャンネルがある必要アリ
Zoomのブレイクアウトルーム機能からインスパイアされ、作成したもの
/vcmembers ボイスチャンネルに接続しているメンバーリストを取得

/poll 簡易的な投票機能(引数が1つの場合と2以上の場合で動作が変わる)。
引数が1件の場合、YES, NOの投票となる
引数が2件以上の場合、1つ目の引数がタイトルになり、2件目以降が投票される項目になる
/radikoSearch ラジコの番組表を検索する機能(サブコマンド必須)
サブコマンドなし( /radikoSearch )
通常の検索( /radikoSearch normal )
もっとも単純なキーワードのみ指定
キーワード、検索対象(過去、未来)、地域を指定

日付を指定して検索( /radikoSearch withDate )
sを付与し開始日付、eを付与し終了日付を設定できる
todayを設定すると当日として扱われる(省略系のtも可能)
日付の桁数で扱いが変わる(1桁はx日後として扱われ、2桁は当月の日付と扱われ、4桁は今年の月日として扱われる)
/countMessage
メッセージを数え、ランキングにするコマンド
チャンネル名、(チャンネルごとに)数える数を指定できる。チャンネル名で all を指定するとすべてのチャンネルを数える
環境変数ぼくがかんがえた最強のDiscord Bot作りました!#604d7f18fd049e0000735fbbで設定すれば、ランキングとして表示する数を変更できる(デフォルトは5)
/countReaction
リアクションを数え、ランキングにするコマンド
チャンネル名、(チャンネルごとに)数える数を指定できる。チャンネル名で all を指定するとすべてのチャンネルを数える
環境変数ぼくがかんがえた最強のDiscord Bot作りました!#604d7f18fd049e0000735fbbで設定すれば、ランキングとして表示する数を変更できる(デフォルトは5)

管理用カテゴリ(admincog.pyで実装)
/channel チャンネルを操作するコマンド(サブコマンド必須)
チャンネルの操作権限を渡すと、削除も可能だから嫌だなと思って作ったコマンド。
サブコマンド make でPublicなチャンネルを作成
サブコマンド privateMake でPrivateなチャンネルを作成
サブコマンド roleDelete でチャンネルからロールを削除
サブコマンド roleDelete でチャンネルからロールを削除失敗
/getAuditLog 監査ログを取得
とっても重たい上に見づらい。。。
いつかなんとかしたい(AuditLogChangesをわかりやすく表示する方法あるのかな。。。)
環境変数ぼくがかんがえた最強のDiscord Bot作りました!#6012bb7ffd049e000063ec9aに登録された管理チャンネルに投稿されます!(メンバーの追加/脱退、チャンネルの追加/削除も勝手にウォッチします!)
/purge メッセージを削除(自分とBot※のメッセージのみ削除される)
※Botを削除対象とするかは環境変数ぼくがかんがえた最強のDiscord Bot作りました!#604d7f18fd049e0000735fb3で指定可能。デフォルトは削除しない
仕様を変更し、環境変数でBotの発言を削除可能かは設定可能とした(環境変数で設定がない場合は削除できない)
よく考えると一般的なユーザーはBotの発言を削除されたくないと思われるため
その辺のゲストが突然Botの発言削除しまくったらBANされる...
/deleteMessage
指定したキーワードを含むメッセージを削除(自分とBot※のメッセージのみ削除される)※Botを削除対象とするかは環境変数ぼくがかんがえた最強のDiscord Bot作りました!#604d7f18fd049e0000735fb3で指定可能。デフォルトは削除しない
リアクションチャンネラーカテゴリ(reactionchannelercog.pyで実装)
/reactionChanneler リアクションチャンネラーを操作するコマンド(サブコマンド必須
Slackのリアク字チャンネラーからインスパイアされ、作成したもの。
環境変数ぼくがかんがえた最強のDiscord Bot作りました!#604d7eeafd049e0000735faeで設定すれば、Webhookを利用し別のギルドに転送可能!
環境変数ぼくがかんがえた最強のDiscord Bot作りました!#6012bb7ffd049e000063eca0で設定すれば、リアクションがクリックされるたびに発動させることもできます!(嵐にはどうか使わないようにしてください...)
注意点! Herokuで動かす場合は、環境変数ぼくがかんがえた最強のDiscord Bot作りました!#6012bb7ffd049e000063ec9c IS_HEROKU True にしてください!
Herokuは1日1回再起動し、ファイルが全部消えてしまうため...
リアクションチャンネラー追加
リアクションチャンネラー削除

リアクションチャンネラー表示
リアクションチャンネラー全削除

その他、リアクションによって発動する機能をまとめている
:pushpin:をつけると、ピン留めする機能
メッセージ編集権限を与えるのは微妙だが、ピン留めさせたかったため
:pushpin: のイベント
リアクションによってチャンネルに投稿する機能(リアクションチャンネラー機能とする)
リアクションチャンネラーで登録したものが反応する部分
リアクションチャンネラーの対象のリアクションを追加すると、
あらかじめ指定されたチャンネルへリンクが投稿される
環境変数ぼくがかんがえた最強のDiscord Bot作りました!#604d7eeafd049e0000735faeで設定しておけば、別のギルドのチャンネルへリンクを投稿することもできる(v0.7.1で実装)
:ok_hand:をつけると画像を保存する機能
ゲームカテゴリ(gamecog.pyで実装)
/wordWolf ワードウルフを行うコマンド
お題を修正したい場合、jsonファイルを変更すること
環境変数ぼくがかんがえた最強のDiscord Bot作りました!#604d7f18fd049e0000735fb7で指定があれば、jsonを公開しておき、それを取得させることも可能
「NGワードゲーム」用のJSONを返却するURLを作成する方法はワードウルフJSONに書きました!
ワードウルフ開始(これは時間が経過し、ネタバレ投稿された画像)
BotからくるDMの様子

/ngWordGame NGワードゲームを行うコマンド
お題を修正したい場合jsonファイルを変更すること(ワードウルフ機能と共用)
環境変数ぼくがかんがえた最強のDiscord Bot作りました!#604d7f18fd049e0000735fb9で指定があれば、jsonを公開しておき、それを取得させることも可能
「NGワードゲーム」用のJSONを返却するURLを作成する方法はワードウルフJSONに書きました!
NGワードゲーム開始(これは時間が経過し、ネタバレ投稿された画像)
BotからくるDMの様子
/coyoteGame コヨーテを行うコマンド
コヨーテ開始(説明が長いですがやれば分かります!)
コヨーテ開始やディール時のDMの様子
コヨーテのディール(カードを配る)
コヨーテ開始(自分でデッキを設定)
コヨーテの状況説明
コヨーテの状況説明(ネタバレ有)
/ohgiriGame
大喜利を始めるコマンド。お題を修正したい場合jsonファイルを変更するか、後述の環境変数ぼくがかんがえた最強のDiscord Bot作りました!#604d7f18fd049e0000735fb5でJSONを返すURLを設定すること
最初に考えてたときの情報は大喜利機能に書きました
「大喜利」用のJSONを返却するURLを作成する方法は大喜利JSONに書きました!
大喜利開始(数字を渡すと、勝利点が設定される。すぐ終わらせたいなら、/o start 1等で実行)
大喜利開始後、BotからくるDMの様子(ここに表示された番号を回答として選択)
大喜利の回答を選んだところ
大喜利の状況説明(経過ターン、現在の親、お題、それぞれの得点などが表示される)
大喜利の回答カードを捨てるコマンド(いい回答が手札にない場合使うコマンド)
一応ペナルティとして1点マイナスです!(本家にはありません!)
親が回答を選択
親が回答を選択しゲーム終了するところ(誰かが勝利点に到達したら終了)

メッセージイベント用(onmessagecog.pyで実装)
コマンドを使って実行する訳ではない機能
メッセージ投稿時に発動する、ScrapboxのURL展開機能
メッセージ編集時(discordによるURLの展開時)に発動する、画像保存機能
(環境変数の説明ぼくがかんがえた最強のDiscord Bot作りました!#6012bb7ffd049e000063ec9e)の SAVE_FILE_MESSAGE で指定した対象のみ)
カテゴリ未設定
/help ヘルプを表示( /help channel のように指定すると説明が返答される)
コマンドが分からない、使い方が分からない、エイリアスが分からない時に使用
help コマンドでこのBOTの使えるコマンドが表示される
help コマンドの結果、下線で表示された物(Cogに付けた機能名)について指定すると説明が表示される
コマンドを指定すれば、コマンドの説明が表示される
コマンドのサブコマンドも(あれば)指定でき、説明が表示される

環境変数の説明
DISCORD_TOKEN = 'discord_bot_token'
ここにDiscord Botのトークンを貼り付ける(とても重要。これをしないと動かない)
LOG_LEVEL = INFO
ログレベルを設定したい場合、設定する。デフォルトはWARN。DEBUG, INFO, WARN, ERRORが設定可能
AUDIT_LOG_SEND_CHANNEL = "guild1.audit_log_send_channel_id1;guild1.audit_log_send_channel_id1"
管理用のチャンネルを記載する。 ギルドID.管理用のチャンネルID の形式で記載する。複数ある場合は、「;」を挟む必要がある
IS_HEROKU = True
Herokuで動かす場合、Trueとする
discordのチャンネルを使用し、リアクションチャネラーのデータが消えないように試みる
reaction_channel_control を作成し、そこにjsonデータを添付することでデータを保持する)
SAVE_FILE_MESSAGE = "twitter"
保存したい画像ファイルをもつURLの一部を指定。正規表現対応
複数ある場合はパイプ(|)などを駆使すること
FIRST_REACTION_CHECK = True
すでにリアクションが付けられた物について、リアクションチャンネラーを発動しないかどうかの設定
基本的にはTrueがオススメ。寂しいときはFalseでもOK
(何回だってチャンネルに転記されちゃいますが!)
REACTION_CHANNELER_PERMIT_WEBHOOK_ID = "webhook_id"
リアクションチャンネラー機能の拡張設定。ここにWebhook IDか「all」という文字列を記載すると、リアクションチャンネラー機能でWebhookが使用できる(v0.7.1で実装)
リアクションを設定するだけで、別のギルドにメッセージを転送することができるようになる
この環境変数にWebhook IDがない、または、allが記載されていない場合、登録は可能だが、実際に実行はされない
勝手にリアクションチャンネラーを登録され情報が流出することを防ぐため、環境変数で指定がない限り実行されないようにする(少し面倒かもしれない)
SCRAPBOX_SID_AND_PROJECTNAME = "all:scrapbox_sid@projectname1,projectname2;guild1:scrapbox_sid@projectname3"
Scrapboxの展開をする際に使用する、sidとプロジェクト名についての設定
sidについては、/nishio/ScrapboxのprivateプロジェクトのAPIを叩く を参照し、注意点を把握した上対応すること
設定が複数存在する場合、「;」を挟む必要がある
左端のallの部分(対象ギルド)をギルドIDにすると、指定のギルドでしか展開しない
allの場合、すべてのギルドで発動
sidを適用したいプロジェクトが複数ある場合、「,」(コンマ)を挟む必要がある
PURGE_TARGET_IS_ME_AND_BOT=False
/purgeコマンド、/deleteMessageコマンドで削除する対象にBotを含むかの設定(設定がない場合は、自分の投稿のみが削除対象)
OHGIRI_JSON_URL=ohgiri_json_url
大喜利機能で使用するJSONをURLから取得する場合に設定(Cogを読み込む際に取得されます)
大喜利JSONに具体的な設定を書きました! そこで作成したウェブアプリのURLを登録する感じです!
WORDWOLF_JSON_URL=wordwolf_json_url
ワードウルフ機能で使用するJSONをURLから取得する場合に設定(Cogを読み込む際に取得されます)。環境変数がない場合は、jsonファイルを使用
ワードウルフJSONを参照してください
NGWORD_GAME_JSON_URL=ngword_game_json_url
NGワードゲーム機能で使用するJSONをURLから取得する場合に設定(Cogを読み込む際に取得されます)。環境変数がない場合は、jsonファイルを使用
ワードウルフJSONを参照してください
COUNT_RANK_SETTING=5
/countMessageと/countReactionで使用するランキングの数を設定。未指定の場合、5として扱う。