errors when broadcast fix
This commit is contained in:
@@ -337,8 +337,14 @@ async def confirm_broadcast_callback_handler(
|
|||||||
# Prepare queue stats presentation
|
# Prepare queue stats presentation
|
||||||
queue_stats = queue_manager.get_queue_stats()
|
queue_stats = queue_manager.get_queue_stats()
|
||||||
back_keyboard = get_back_to_admin_panel_keyboard(current_lang, i18n)
|
back_keyboard = get_back_to_admin_panel_keyboard(current_lang, i18n)
|
||||||
|
initial_user_failed = queue_stats.get("user_failed_messages", 0)
|
||||||
|
initial_group_failed = queue_stats.get("group_failed_messages", 0)
|
||||||
|
|
||||||
def build_queue_status(stats: dict) -> str:
|
def build_queue_status(stats: dict) -> str:
|
||||||
|
dynamic_failed = max(
|
||||||
|
0, stats.get("user_failed_messages", 0) - initial_user_failed
|
||||||
|
) + max(0, stats.get("group_failed_messages", 0) - initial_group_failed)
|
||||||
|
total_failed = failed_count + dynamic_failed
|
||||||
return _(
|
return _(
|
||||||
"broadcast_queue_result",
|
"broadcast_queue_result",
|
||||||
default=(
|
default=(
|
||||||
@@ -351,7 +357,7 @@ async def confirm_broadcast_callback_handler(
|
|||||||
"ℹ️ Сообщения будут отправлены автоматически с соблюдением лимитов Telegram."
|
"ℹ️ Сообщения будут отправлены автоматически с соблюдением лимитов Telegram."
|
||||||
),
|
),
|
||||||
sent_count=sent_count,
|
sent_count=sent_count,
|
||||||
failed_count=failed_count,
|
failed_count=total_failed,
|
||||||
user_queue_size=stats["user_queue_size"],
|
user_queue_size=stats["user_queue_size"],
|
||||||
group_queue_size=stats["group_queue_size"],
|
group_queue_size=stats["group_queue_size"],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ class MessageQueue:
|
|||||||
self.last_send_times: deque[datetime] = deque()
|
self.last_send_times: deque[datetime] = deque()
|
||||||
self.is_processing = False
|
self.is_processing = False
|
||||||
self.delay_between_messages = 1.0 / messages_per_second
|
self.delay_between_messages = 1.0 / messages_per_second
|
||||||
|
self.total_sent = 0
|
||||||
|
self.total_failed = 0
|
||||||
|
|
||||||
async def add_message(self, message: QueuedMessage) -> None:
|
async def add_message(self, message: QueuedMessage) -> None:
|
||||||
"""Add message to queue"""
|
"""Add message to queue"""
|
||||||
@@ -50,6 +52,7 @@ class MessageQueue:
|
|||||||
try:
|
try:
|
||||||
await self._send_message(message)
|
await self._send_message(message)
|
||||||
self.last_send_times.append(datetime.now())
|
self.last_send_times.append(datetime.now())
|
||||||
|
self.total_sent += 1
|
||||||
|
|
||||||
# Keep only recent send times (last minute)
|
# Keep only recent send times (last minute)
|
||||||
cutoff_time = datetime.now() - timedelta(seconds=60)
|
cutoff_time = datetime.now() - timedelta(seconds=60)
|
||||||
@@ -57,6 +60,7 @@ class MessageQueue:
|
|||||||
self.last_send_times.popleft()
|
self.last_send_times.popleft()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
self.total_failed += 1
|
||||||
logging.error(f"Failed to send queued message to {message.chat_id}: {e}")
|
logging.error(f"Failed to send queued message to {message.chat_id}: {e}")
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
@@ -233,7 +237,11 @@ class MessageQueueManager:
|
|||||||
"group_queue_processing": self.group_queue.is_processing,
|
"group_queue_processing": self.group_queue.is_processing,
|
||||||
"user_queue_processing": self.user_queue.is_processing,
|
"user_queue_processing": self.user_queue.is_processing,
|
||||||
"group_recent_sends": len(self.group_queue.last_send_times),
|
"group_recent_sends": len(self.group_queue.last_send_times),
|
||||||
"user_recent_sends": len(self.user_queue.last_send_times)
|
"user_recent_sends": len(self.user_queue.last_send_times),
|
||||||
|
"group_failed_messages": self.group_queue.total_failed,
|
||||||
|
"user_failed_messages": self.user_queue.total_failed,
|
||||||
|
"group_sent_messages": self.group_queue.total_sent,
|
||||||
|
"user_sent_messages": self.user_queue.total_sent,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -250,4 +258,4 @@ def init_queue_manager(bot: Bot) -> MessageQueueManager:
|
|||||||
|
|
||||||
def get_queue_manager() -> Optional[MessageQueueManager]:
|
def get_queue_manager() -> Optional[MessageQueueManager]:
|
||||||
"""Get global queue manager instance"""
|
"""Get global queue manager instance"""
|
||||||
return _queue_manager
|
return _queue_manager
|
||||||
|
|||||||
Reference in New Issue
Block a user