English | 日本語
設定したチャンネルのメッセージを定期的に削除するDiscord Botです。
- 削除対象チャンネルの設定
- 削除対象チャンネルの解除
- 除外設定
- 除外解除
- サーバー内設定一覧を確認
- チャンネル内全メッセージ削除
監視対象のチャンネルを設定します。 誤って削除しないようにコマンド実行後に確認メッセージを表示し、10秒以内にOkボタンを押すことで設定が完了します。 同じチャンネルに再度設定した場合、設定が上書きされます。 なお、除外設定のあるメッセージは削除されません。
/enable [#削除対象チャンネル] [ライフタイム]
削除対象チャンネルはチャンネルメンション(#チャンネル名)の形式で入力してください。 入力必須のパラメータです。
メッセージをどれだけの期間残したいかです。 以下のような文字列で入力します。
入力文字 | 短縮表記 | 期間 |
---|---|---|
1week | 1w | 1週間 |
1day | 1d | 1日 (24時間) |
1hour | 1h | 1時間 |
1min | 1mi | 1分 |
1sec | 1s | 1秒 |
複数の組み合わせで指定することもできます。
入力文字 | 期間 |
---|---|
"1week 2day 3hour 4min 5sec" | 9日3時間4分5秒 |
"1 day 1 hour 30 min" | 1日1時間30分 |
"90mi" | 1時間30分 |
"1h90mi" | 2時間30分 |
入力任意のパラメータです。 省略した場合、"1day"がデフォルトで設定されます。
チャンネルを監視対象から解除します。
/disable {#解除対象チャンネル}
解除対象チャンネルはチャンネルメンション(#チャンネル名)の形式で入力してください。 入力必須のパラメータです。
メッセージURL、またはメッセージIDを指定することで削除設定から除外することができます。
/exclude add [msgurl]
メッセージURLを指定します。 入力必須のパラメータです。
設定済みの除外設定を解除します。 誤って削除しないようにコマンド実行後に確認メッセージを表示し、10秒以内にOkボタンを押すことで設定が完了します。
/exclude remove [msgurl]
メッセージURLを指定します。 入力必須のパラメータです。
現在のサーバーで設定中の設定内容を表示します。
/setttings [channel]
入力任意のパラメータです。 省略した場合、サーバー内の全ての設定が表示されます。
対象したチャンネルのメッセージをすべて削除します。 誤って削除しないようにコマンド実行後に確認メッセージを表示し、10秒以内にOkボタンを押すことで設定が完了します。
/clear {#削除対象チャンネル}
削除対象チャンネルはチャンネルメンション(#チャンネル名)の形式で入力してください。 入力必須のパラメータです。
このBotは以下の権限を利用します。
権限名 | 権限内容 |
---|---|
メッセージを管理 | 削除対象のチャンネルにアクセスし、削除するために必要です |
メッセージ履歴を読む | Bot導入以前のメッセージを削除したい場合に必要です。 |
このBotの動作のために以下のデータを収集します。
収集対象 | 収集内容 |
---|---|
サーバーID、チャンネルID | 削除対象のサーバー、チャンネルを識別するために使用します |
メッセージID | 除外対象を設定するために使用します(メッセージの内容やリアクションの読み取りはしません) |
セキュリティの都合上、「message_cleaner_admin」というロールを持つ人のみ操作ができるようにしています。 Botはこのロールを自動生成しないため、管理者の方がロールを作成して信頼できる人にのみそのロールを付与してください。 また、「message_cleaner_admin」ロールがあってもコマンド実行者にメッセージ管理権限がなければ消去系のコマンドは使用できないため、そのロールに対してメッセージ管理権限を付与することをおすすめします。
devcontainerを使用しており、基本的な設定はそこにまとめています。
- ソースをgit cloneする
- configフォルダに環境ファイルを用意する
- .env(.env.exampleをコピーしてください)
- .env.db.production(.env.db.productionをコピーし、DB接続情報を編集してください)
- .env.testing(.env.exampleをコピーしてください)
- VSCodeで開き「コンテナで再度開く」を選択
.vscode/launch.json が作ってあるため、そのまま「実行」タブから実行できます。
pytest、pytest-asyncioを使用しています。 devcontainer作成の時点でこれらの環境は自動的に作られるため、「テスト」タブから実行可能です。
docker-composeを使用しています。 ※将来的にはk8sへ移行する予定
本番環境開始
sh prod.up.sh
キャッシュをクリアして実行したい場合
sh prod.up.nocache.sh
停止する場合
sh prod.down.sh
- Discord APIのためのPythonラッパー。
- GitHub: https://github.com/Rapptz/discord.py
- ライセンス: MIT License
- .envファイルからキーと値のペアを読み取り、それらを環境変数として設定するライブラリ。
- GitHub: https://github.com/theskumar/python-dotenv
- ライセンス: MIT License
- Python/asyncio用の高速なPostgreSQLデータベースクライアントライブラリ。
- GitHub: https://github.com/MagicStack/asyncpg
- ライセンス: Apache License 2.0
- Python用のSQLツールキットおよびオブジェクトリレーショナルマッパー。
- GitHub: https://github.com/sqlalchemy/sqlalchemy
- ライセンス: MIT License
- Python用のシンプルなRust風のResult型。
- GitHub: https://github.com/dbrgn/result
- ライセンス: MIT License
- 成熟したフル機能のPythonテストツール。
- GitHub: https://github.com/pytest-dev/pytest
- ライセンス: MIT License
- asyncioをサポートするPytestプラグイン。
- GitHub: https://github.com/pytest-dev/pytest-asyncio
- ライセンス: Apache License 2.0
- Pytestでの使用を容易にするmockパッケージの薄いラッパー。
- GitHub: https://github.com/pytest-dev/pytest-mock
- ライセンス: MIT License