問題
ボットがオフラインの間も、ユーザーはDiscord上でpollメッセージにリアクション(投票)を追加できます。しかし、restorePolls() はデータベースからのみ投票データを読み込むため、ダウンタイム中に追加された投票が失われます。
これにより以下の問題が発生します:
- 投票数が実際より少なくカウントされる
- しきい値通知が発火しない
- poll終了時のメッセージで投票数が不正確
提案する解決策
restorePolls() に reconcileVotesFromDiscord() ステップを追加し、Discordから現在のリアクションを取得してデータベースと照合します。
実装概要
- DBからpollを読み込んだ後、Discordメッセージを取得
- すべてのリアクション(🟢, 🟡, 🟠)とそのユーザーを読み取る
- DBの投票と比較し、差分を同期
- Discordのリアクションを正とする
考慮事項
- レート制限: Discord.jsが自動で処理するが、pollが多いと起動が遅くなる可能性
- 競合解決: ユーザーが複数のリアクションを持つ場合、優先順位または最初に見つかったものを使用
- エラーハンドリング: メッセージが削除されている場合はスキップ
受け入れ基準
関連
SQLite永続化機能のフォローアップ強化です。
問題
ボットがオフラインの間も、ユーザーはDiscord上でpollメッセージにリアクション(投票)を追加できます。しかし、
restorePolls()はデータベースからのみ投票データを読み込むため、ダウンタイム中に追加された投票が失われます。これにより以下の問題が発生します:
提案する解決策
restorePolls()にreconcileVotesFromDiscord()ステップを追加し、Discordから現在のリアクションを取得してデータベースと照合します。実装概要
考慮事項
受け入れ基準
関連
SQLite永続化機能のフォローアップ強化です。