Skip to content

Latest commit

 

History

History
245 lines (162 loc) · 8.49 KB

README.ja.md

File metadata and controls

245 lines (162 loc) · 8.49 KB

Discordメッセージクリーナー

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

メッセージURLを指定します。 入力必須のパラメータです。

メッセージ除外解除

設定済みの除外設定を解除します。 誤って削除しないようにコマンド実行後に確認メッセージを表示し、10秒以内にOkボタンを押すことで設定が完了します。

/exclude remove [msgurl]

パラメータ① メッセージURL

メッセージURLを指定します。 入力必須のパラメータです。

サーバー内設定一覧を確認

現在のサーバーで設定中の設定内容を表示します。

/setttings [channel]

パラメータ① 表示対象のチャンネル

入力任意のパラメータです。 省略した場合、サーバー内の全ての設定が表示されます。

チャンネル内全メッセージ削除

対象したチャンネルのメッセージをすべて削除します。 誤って削除しないようにコマンド実行後に確認メッセージを表示し、10秒以内にOkボタンを押すことで設定が完了します。

/clear {#削除対象チャンネル}

パラメータ① 削除対象チャンネル

削除対象チャンネルはチャンネルメンション(#チャンネル名)の形式で入力してください。 入力必須のパラメータです。

Botに必要な権限について

このBotは以下の権限を利用します。

権限名 権限内容
メッセージを管理 削除対象のチャンネルにアクセスし、削除するために必要です
メッセージ履歴を読む Bot導入以前のメッセージを削除したい場合に必要です。

収集するデータについて

このBotの動作のために以下のデータを収集します。

収集対象 収集内容
サーバーID、チャンネルID 削除対象のサーバー、チャンネルを識別するために使用します
メッセージID 除外対象を設定するために使用します(メッセージの内容やリアクションの読み取りはしません)

Botの操作が可能な権限について

セキュリティの都合上、「message_cleaner_admin」というロールを持つ人のみ操作ができるようにしています。 Botはこのロールを自動生成しないため、管理者の方がロールを作成して信頼できる人にのみそのロールを付与してください。 また、「message_cleaner_admin」ロールがあってもコマンド実行者にメッセージ管理権限がなければ消去系のコマンドは使用できないため、そのロールに対してメッセージ管理権限を付与することをおすすめします。

開発環境

環境構築

devcontainerを使用しており、基本的な設定はそこにまとめています。

  1. ソースをgit cloneする
  2. configフォルダに環境ファイルを用意する
    1. .env(.env.exampleをコピーしてください)
    2. .env.db.production(.env.db.productionをコピーし、DB接続情報を編集してください)
    3. .env.testing(.env.exampleをコピーしてください)
  3. 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.py

python-dotenv

asyncpg

sqlalchemy

result

pytest

pytest-asyncio

pytest-mock