diff --git a/app.py b/app.py index 1221af9..2911b6a 100644 --- a/app.py +++ b/app.py @@ -313,7 +313,19 @@ class EmailMonitor: except Exception as e: logger.error(f"Discord送信エラー: {str(e)}") return False - + + def send_to_discord_with_rate_limit(self, email_msgs: List[EmailMessage], rate_limit: float = 1.0, batch_size: int = 10): + """Discordにメールを送信(レート制限対応)""" + for i in range(0, len(email_msgs), batch_size): + batch = email_msgs[i:i + batch_size] + for email_msg in batch: + if self.send_to_discord(email_msg): + logger.info(f"処理完了: {email_msg.subject}") + self.last_processed_uid = email_msg.uid # 最後に処理したUIDを更新 + else: + logger.warning(f"Discord送信失敗: {email_msg.subject}") + time.sleep(rate_limit) # レート制限のための待機 + def start_monitoring(self): """メール監視を開始""" logger.info("メール監視を開始します...") @@ -334,13 +346,7 @@ class EmailMonitor: if new_emails: logger.info(f"{len(new_emails)}件の新しいメールが見つかりました") - - for email_msg in new_emails: - if self.send_to_discord(email_msg): - logger.info(f"処理完了: {email_msg.subject}") - self.last_processed_uid = email_msg.uid # 最後に処理したUIDを更新 - else: - logger.warning(f"Discord送信失敗: {email_msg.subject}") + self.send_to_discord_with_rate_limit(new_emails) else: logger.debug("新しいメールはありません")