diff --git a/services/admin_bot.py b/services/admin_bot.py
index 8475f83..682e874 100644
--- a/services/admin_bot.py
+++ b/services/admin_bot.py
@@ -751,21 +751,28 @@ class AdminBotService:
async def _render_source_list(self):
sources = await self.repo.get_active_sources()
- if not sources:
- return "هیچ کانال مبدایی ثبت نشده است. روی ➕ افزودن کانال مبدا بزنید.", []
-
categories = await self.repo.get_categories()
+ if not sources:
+ text = (
+ "📡 کانالهای مبدا (Sources):\n\n"
+ "هیچ کانال مبدایی ثبت نشده است. برای ثبت کانال جدید روی دکمه زیر بزنید:"
+ )
+ buttons = [
+ [Button.inline("➕ افزودن کانال مبدا جدید", data="hub_add_src")],
+ [Button.inline("🔙 بازگشت به منوی رباتها", data="hub_bots")]
+ ]
+ return text, buttons
+
if not categories:
- # If no categories exist yet, show flat list
text = (
f"📡 کانالهای مبدا فعال ({len(sources)} کانال)\n\n"
"برای دیدن جزئیات و استخراج پست، روی نام هر کانال بزنید:"
)
buttons = [[Button.inline(f"📢 {s.title or s.channel_id}", data=f"src_view:{s.id}")] for s in sources]
- buttons.append([Button.inline("➕ ایجاد دستهبندی جدید", data="cat_add")])
+ buttons.append([Button.inline("➕ افزودن کانال مبدا جدید", data="hub_add_src")])
+ buttons.append([Button.inline("🔙 بازگشت به منوی رباتها", data="hub_bots")])
return text, buttons
- # Show categories view for sources
text = (
f"📡 دستهبندیهای کانالهای مبدا ({len(sources)} کانال)\n\n"
"روی هر دستهبندی بزنید تا کانالهای مبدای مربوط به آن نمایش داده شود:"
@@ -779,8 +786,12 @@ class AdminBotService:
if uncat_srcs:
buttons.append([Button.inline(f"📁 کانالهای بدون دستهبندی ({len(uncat_srcs)} کانال)", data="src_cat_view:0")])
- buttons.append([Button.inline("🌐 نمایش همه کانالهای مبدا یکجا", data="src_all")])
- buttons.append([Button.inline("📂 مدیریت دستهبندیها", data="list_cat")])
+ buttons.append([Button.inline("➕ افزودن کانال مبدا جدید", data="hub_add_src")])
+ buttons.append([
+ Button.inline("🌐 نمایش همه کانالهای مبدا یکجا", data="src_all"),
+ Button.inline("📂 مدیریت دستهبندیها", data="list_cat")
+ ])
+ buttons.append([Button.inline("🔙 بازگشت به منوی رباتها", data="hub_bots")])
return text, buttons
async def _render_source_channels_in_category(self, category_id: int):
@@ -799,7 +810,10 @@ class AdminBotService:
f"📡 کانالهای مبدا در دسته: «{cat_name}»\n\n"
"هیچ کانال مبدایی در این دستهبندی قرار ندارد."
)
- buttons = [[Button.inline("🔙 بازگشت به دستهبندیها", data="list_src")]]
+ buttons = [
+ [Button.inline("➕ افزودن کانال مبدا جدید", data="hub_add_src")],
+ [Button.inline("🔙 بازگشت به دستهبندیها", data="list_src")]
+ ]
return text, buttons
text = (
@@ -807,13 +821,14 @@ class AdminBotService:
"برای مشاهده جزئیات و استخراج پست، روی کانال مورد نظر بزنید:"
)
buttons = [[Button.inline(f"📢 {s.title or s.channel_id}", data=f"src_view:{s.id}")] for s in sources]
+ buttons.append([Button.inline("➕ افزودن کانال مبدا جدید", data="hub_add_src")])
buttons.append([Button.inline("🔙 بازگشت به دستهبندیها", data="list_src")])
return text, buttons
async def _render_source_all_flat(self):
sources = await self.repo.get_active_sources()
if not sources:
- return "هیچ کانال مبدایی ثبت نشده است. روی ➕ افزودن کانال مبدا بزنید.", []
+ return "هیچ کانال مبدایی ثبت نشده است. روی ➕ افزودن کانال مبدا بزنید.", [[Button.inline("➕ افزودن کانال مبدا جدید", data="hub_add_src")]]
cats = {c.id: c.name for c in await self.repo.get_categories()}
text = (
f"📡 همه کانالهای مبدا فعال ({len(sources)} کانال)\n\n"
@@ -823,17 +838,25 @@ class AdminBotService:
for s in sources:
cat_label = f" [{cats[s.category_id]}]" if s.category_id and s.category_id in cats else ""
buttons.append([Button.inline(f"📢 {s.title or s.channel_id}{cat_label}", data=f"src_view:{s.id}")])
+ buttons.append([Button.inline("➕ افزودن کانال مبدا جدید", data="hub_add_src")])
buttons.append([Button.inline("🔙 بازگشت به دستهبندیها", data="list_src")])
return text, buttons
async def _render_target_list(self):
targets = await self.repo.get_active_targets()
- if not targets:
- return "هیچ کانال مقصدی ثبت نشده است. روی ➕ افزودن کانال مقصد بزنید.", []
-
categories = await self.repo.get_categories()
+ if not targets:
+ text = (
+ "🎯 کانالهای مقصد (Targets):\n\n"
+ "هیچ کانال مقصدی ثبت نشده است. برای ثبت کانال مقصد جدید روی دکمه زیر بزنید:"
+ )
+ buttons = [
+ [Button.inline("➕ افزودن کانال مقصد جدید", data="hub_add_trg")],
+ [Button.inline("🔙 بازگشت به منوی رباتها", data="hub_bots")]
+ ]
+ return text, buttons
+
if not categories:
- # If no categories exist yet, show flat list
text = (
f"🎯 کانالهای مقصد ({len(targets)} کانال)\n\n"
"برای دیدن و تغییر تنظیمات، روی نام هر کانال بزنید:"
@@ -842,10 +865,10 @@ class AdminBotService:
for t in targets:
auto = " 🤖" if t.auto_source_ids else ""
buttons.append([Button.inline(f"🎯 {t.title or t.channel_id}{auto}".strip(), data=f"trg_view:{t.id}")])
- buttons.append([Button.inline("➕ ایجاد دستهبندی جدید", data="cat_add")])
+ buttons.append([Button.inline("➕ افزودن کانال مقصد جدید", data="hub_add_trg")])
+ buttons.append([Button.inline("🔙 بازگشت به منوی رباتها", data="hub_bots")])
return text, buttons
- # Show categories view for targets
text = (
f"🎯 دستهبندیهای کانالهای مقصد ({len(targets)} کانال)\n\n"
"روی هر دستهبندی بزنید تا کانالهای مقصد مربوط به آن نمایش داده شود:"
@@ -859,8 +882,12 @@ class AdminBotService:
if uncat_trgs:
buttons.append([Button.inline(f"📁 کانالهای بدون دستهبندی ({len(uncat_trgs)} کانال)", data="trg_cat_view:0")])
- buttons.append([Button.inline("🌐 نمایش همه کانالهای مقصد یکجا", data="trg_all")])
- buttons.append([Button.inline("📂 مدیریت دستهبندیها", data="list_cat")])
+ buttons.append([Button.inline("➕ افزودن کانال مقصد جدید", data="hub_add_trg")])
+ buttons.append([
+ Button.inline("🌐 نمایش همه کانالهای مقصد یکجا", data="trg_all"),
+ Button.inline("📂 مدیریت دستهبندیها", data="list_cat")
+ ])
+ buttons.append([Button.inline("🔙 بازگشت به منوی رباتها", data="hub_bots")])
return text, buttons
async def _render_target_channels_in_category(self, category_id: int):
@@ -879,7 +906,10 @@ class AdminBotService:
f"🎯 کانالهای مقصد در دسته: «{cat_name}»\n\n"
"هیچ کانال مقصدی در این دستهبندی قرار ندارد."
)
- buttons = [[Button.inline("🔙 بازگشت به دستهبندیها", data="list_trg")]]
+ buttons = [
+ [Button.inline("➕ افزودن کانال مقصد جدید", data="hub_add_trg")],
+ [Button.inline("🔙 بازگشت به دستهبندیها", data="list_trg")]
+ ]
return text, buttons
text = (
@@ -890,13 +920,14 @@ class AdminBotService:
for t in targets:
auto = " 🤖" if t.auto_source_ids else ""
buttons.append([Button.inline(f"🎯 {t.title or t.channel_id}{auto}".strip(), data=f"trg_view:{t.id}")])
+ buttons.append([Button.inline("➕ افزودن کانال مقصد جدید", data="hub_add_trg")])
buttons.append([Button.inline("🔙 بازگشت به دستهبندیها", data="list_trg")])
return text, buttons
async def _render_target_all_flat(self):
targets = await self.repo.get_active_targets()
if not targets:
- return "هیچ کانال مقصدی ثبت نشده است. روی ➕ افزودن کانال مقصد بزنید.", []
+ return "هیچ کانال مقصدی ثبت نشده است. روی ➕ افزودن کانال مقصد بزنید.", [[Button.inline("➕ افزودن کانال مقصد جدید", data="hub_add_trg")]]
cats = {c.id: c.name for c in await self.repo.get_categories()}
text = (
f"🎯 همه کانالهای مقصد ({len(targets)} کانال)\n\n"
@@ -907,6 +938,7 @@ class AdminBotService:
auto = " 🤖" if t.auto_source_ids else ""
cat_label = f" [{cats[t.category_id]}]" if t.category_id and t.category_id in cats else ""
buttons.append([Button.inline(f"🎯 {t.title or t.channel_id}{cat_label}{auto}".strip(), data=f"trg_view:{t.id}")])
+ buttons.append([Button.inline("➕ افزودن کانال مقصد جدید", data="hub_add_trg")])
buttons.append([Button.inline("🔙 بازگشت به دستهبندیها", data="list_trg")])
return text, buttons
@@ -1130,14 +1162,18 @@ class AdminBotService:
buttons = [
[
Button.inline(f"📡 کانالهای مبدا ({len(sources)})", data="list_src"),
- Button.inline(f"🎯 کانالهای مقصد ({len(targets)})", data="list_trg")
+ Button.inline("➕ افزودن مبدا", data="hub_add_src")
+ ],
+ [
+ Button.inline(f"🎯 کانالهای مقصد ({len(targets)})", data="list_trg"),
+ Button.inline("➕ افزودن مقصد", data="hub_add_trg")
],
[
Button.inline(f"🌐 وبسایتهای مبدا ({len(websites)})", data="list_web"),
- Button.inline("🔑 احراز هویت یوزربات", data="hub_req_code")
+ Button.inline("➕ افزودن وبسایت", data="add_web")
],
[
- Button.inline("➕ افزودن منبع / کانال جدید", data="hub_add"),
+ Button.inline("🔑 احراز هویت یوزربات", data="hub_req_code"),
Button.inline("📂 مدیریت دستهبندیها", data="list_cat")
],
[Button.inline("🔙 بازگشت به منوی اصلی", data="back_to_main")]