Discord Bot 課題提出通知

1. 目的

課題提出の期限をDiscordの特定のチャンネルで通知するBotを作成し、学生やメンバーに課題提出のリマインドを行う。

2. 主要機能

2.1 課題登録機能

  • コマンド: `!add_assignment`
  • 入力:
    • 課題名
    • 提出期限(日時)
    • 詳細説明(オプション)
  • 動作:
    • 課題情報をデータベースに保存。
    • 期限日と詳細を指定のチャンネルに確認メッセージを投稿。

2.2 課題リスト表示機能

  • コマンド: `!list_assignments`
  • 動作:
    • 登録されているすべての課題を表示。
    • 各課題の提出期限と詳細を含む。

2.3 課題削除機能

  • コマンド: `!remove_assignment`
  • 入力: 課題IDまたは課題名
  • 動作:
    • 指定された課題をデータベースから削除。
    • 削除成功メッセージを指定のチャンネルに投稿。

2.4 課題リマインド機能

  • 動作:
    • 提出期限の24時間前および1時間前にリマインドメッセージを指定のチャンネルに投稿。

3. 使用技術

  • プログラミング言語: Python
  • Discord APIライブラリ: discord.py
  • データベース: SQLite(小規模)またはPostgreSQL(大規模)

4. ユーザーインターフェース

  • コマンドラインインターフェース: Discordのテキストチャットでコマンドを入力
  • メッセージフォーマット: 埋め込みメッセージ(Embed)

5. コマンド詳細

`!add_assignment`

cssコードをコピーする!add_assignment [課題名] [提出期限] [詳細説明(オプション)]

例: !add_assignment 数学の宿題 2024-06-20 23:59 数学の教科書のp23-25

`!list_assignments`

diffコードをコピーする!list_assignments

`!remove_assignment`

yamlコードをコピーする!remove_assignment [課題IDまたは課題名]

例: !remove_assignment 1

例: !remove_assignment 数学の宿題

6. 通知フォーマット

課題追加時

diffコードをコピーする新しい課題が追加されました!

課題名: 数学の宿題

提出期限: 2024-06-20 23:59

詳細: 数学の教科書のp23-25

リマインド時

diffコードをコピーする提出期限が近づいています!

課題名: 数学の宿題

提出期限: 明日 2024-06-20 23:59

7. エラーハンドリング

  • 不正なコマンド入力時のエラーメッセージ
  • データベース接続エラー時の対応
  • コマンド実行時の例外処理

8. 拡張機能(オプション)

  • 重要度設定機能
  • 課題の編集機能
  • 課題提出状況のトラッキング機能
  • 提出先URLの登録機能

9. セキュリティ

  • コマンドの実行権限を制御(例: 課題登録・削除は管理者のみ)
  • データベースへの不正アクセスを防ぐためのセキュリティ対策