diff --git a/services/admin_bot.py b/services/admin_bot.py
index b13cd1c..575db13 100644
--- a/services/admin_bot.py
+++ b/services/admin_bot.py
@@ -135,9 +135,11 @@ class AdminBotService:
async def on_website_error_alert(self, alert_text: str, site_id: int):
buttons = [[Button.inline("🤖 تحلیل مجدد هوشمند وبسایت", data=f"web_reanalyze:{site_id}")]]
- if self.review_channel_id:
+ def_adm = await self.repo.get_default_admin_channel()
+ target_ch = def_adm.channel_id if def_adm else self.review_channel_id
+ if target_ch:
try:
- await self.client.send_message(self.review_channel_id, alert_text, parse_mode="html", buttons=buttons)
+ await self.client.send_message(target_ch, alert_text, parse_mode="html", buttons=buttons)
except Exception as e:
logger.error(f"Failed to send website alert to review channel: {e}")
for admin_id in self.admin_user_ids:
@@ -178,11 +180,14 @@ class AdminBotService:
async def notify_admins(self, text: str, include_review_channel: bool = True):
"""Broadcast Persian message to admin DMs, and optionally review channel."""
- if include_review_channel and self.review_channel_id:
- try:
- await self.client.send_message(self.review_channel_id, text, parse_mode="html")
- except Exception as e:
- logger.error(f"Failed to notify review channel: {e}")
+ if include_review_channel:
+ def_adm = await self.repo.get_default_admin_channel()
+ target_ch = def_adm.channel_id if def_adm else self.review_channel_id
+ if target_ch:
+ try:
+ await self.client.send_message(target_ch, text, parse_mode="html")
+ except Exception as e:
+ logger.error(f"Failed to notify review channel: {e}")
menu = await self.get_menu()
for admin_id in self.admin_user_ids:
@@ -1306,7 +1311,7 @@ class AdminBotService:
is_def = (source.admin_channel_id is None)
def_mark = "✅ " if is_def else ""
def_adm = await self.repo.get_default_admin_channel()
- def_name = f" ({def_adm.title})" if (def_adm and def_adm.title) else (f" ({self.review_channel_id})" if self.review_channel_id else "")
+ def_name = f" ({def_adm.title})" if (def_adm and def_adm.title) else (f" ({def_adm.channel_id})" if def_adm else (f" ({self.review_channel_id})" if self.review_channel_id else " (تعریفنشده)"))
buttons.append([Button.inline(f"{def_mark}⚙️ پیشفرض سیستم{def_name}", data=f"src_set_adm:{source.id}:none")])
buttons.append([Button.inline("➕ افزودن کانال ادمین جدید", data=f"src_add_adm:{source.id}")])
buttons.append([Button.inline("🔙 بازگشت به تنظیمات کانال مبدا", data=f"src_view:{source.id}")])
@@ -1333,7 +1338,7 @@ class AdminBotService:
is_def = (site.admin_channel_id is None)
def_mark = "✅ " if is_def else ""
def_adm = await self.repo.get_default_admin_channel()
- def_name = f" ({def_adm.title})" if (def_adm and def_adm.title) else (f" ({self.review_channel_id})" if self.review_channel_id else "")
+ def_name = f" ({def_adm.title})" if (def_adm and def_adm.title) else (f" ({def_adm.channel_id})" if def_adm else (f" ({self.review_channel_id})" if self.review_channel_id else " (تعریفنشده)"))
buttons.append([Button.inline(f"{def_mark}⚙️ پیشفرض سیستم{def_name}", data=f"web_set_adm:{site.id}:none")])
buttons.append([Button.inline("➕ افزودن کانال ادمین جدید", data=f"web_add_adm:{site.id}")])
buttons.append([Button.inline("🔙 بازگشت به تنظیمات وبسایت", data=f"web_view:{site.id}")])
@@ -1354,7 +1359,10 @@ class AdminBotService:
Button.inline(f"📋 {ch.title or ch.channel_id}{def_star}", data=f"adm_view:{ch.id}"),
])
else:
- lines.append(f"تنها کانال پیشفرض محیطی فعال است: {self.review_channel_id}")
+ if self.review_channel_id:
+ lines.append(f"تنها کانال پیشفرض محیطی فعال است: {self.review_channel_id}")
+ else:
+ lines.append("هیچ کانال نظارتی تعریف نشده است. لطفاً از طریق دکمه زیر کانال نظارت جدید اضافه کنید.")
buttons.append([Button.inline("➕ افزودن کانال ادمین جدید", data="add_adm_ch")])
buttons.append([Button.inline("🔙 بازگشت به منوی رباتها", data="hub_bots")])
@@ -1426,13 +1434,15 @@ class AdminBotService:
posts = await self.repo.clear_all_review_messages()
cleared_db_count = len(posts)
by_channel: Dict[int, List[int]] = {}
+ def_adm = await self.repo.get_default_admin_channel()
+ default_ch = def_adm.channel_id if def_adm else self.review_channel_id
for p in posts:
if p.media_path and os.path.exists(p.media_path):
try:
os.remove(p.media_path)
except Exception:
pass
- ch_id = p.review_channel_id or self.review_channel_id
+ ch_id = p.review_channel_id or default_ch
if ch_id and p.review_message_id:
by_channel.setdefault(ch_id, []).append(p.review_message_id)