Integrate contextual add buttons into channel and source menus
This commit is contained in:
+59
-23
@@ -751,21 +751,28 @@ class AdminBotService:
|
||||
|
||||
async def _render_source_list(self):
|
||||
sources = await self.repo.get_active_sources()
|
||||
if not sources:
|
||||
return "هیچ کانال مبدایی ثبت نشده است. روی <b>➕ افزودن کانال مبدا</b> بزنید.", []
|
||||
|
||||
categories = await self.repo.get_categories()
|
||||
if not sources:
|
||||
text = (
|
||||
"📡 <b>کانالهای مبدا (Sources):</b>\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"📡 <b>کانالهای مبدا فعال ({len(sources)} کانال)</b>\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"📡 <b>دستهبندیهای کانالهای مبدا ({len(sources)} کانال)</b>\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"📡 <b>کانالهای مبدا در دسته: «{cat_name}»</b>\n\n"
|
||||
"<i>هیچ کانال مبدایی در این دستهبندی قرار ندارد.</i>"
|
||||
)
|
||||
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 "هیچ کانال مبدایی ثبت نشده است. روی <b>➕ افزودن کانال مبدا</b> بزنید.", []
|
||||
return "هیچ کانال مبدایی ثبت نشده است. روی <b>➕ افزودن کانال مبدا</b> بزنید.", [[Button.inline("➕ افزودن کانال مبدا جدید", data="hub_add_src")]]
|
||||
cats = {c.id: c.name for c in await self.repo.get_categories()}
|
||||
text = (
|
||||
f"📡 <b>همه کانالهای مبدا فعال ({len(sources)} کانال)</b>\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 "هیچ کانال مقصدی ثبت نشده است. روی <b>➕ افزودن کانال مقصد</b> بزنید.", []
|
||||
|
||||
categories = await self.repo.get_categories()
|
||||
if not targets:
|
||||
text = (
|
||||
"🎯 <b>کانالهای مقصد (Targets):</b>\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"🎯 <b>کانالهای مقصد ({len(targets)} کانال)</b>\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"🎯 <b>دستهبندیهای کانالهای مقصد ({len(targets)} کانال)</b>\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"🎯 <b>کانالهای مقصد در دسته: «{cat_name}»</b>\n\n"
|
||||
"<i>هیچ کانال مقصدی در این دستهبندی قرار ندارد.</i>"
|
||||
)
|
||||
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 "هیچ کانال مقصدی ثبت نشده است. روی <b>➕ افزودن کانال مقصد</b> بزنید.", []
|
||||
return "هیچ کانال مقصدی ثبت نشده است. روی <b>➕ افزودن کانال مقصد</b> بزنید.", [[Button.inline("➕ افزودن کانال مقصد جدید", data="hub_add_trg")]]
|
||||
cats = {c.id: c.name for c in await self.repo.get_categories()}
|
||||
text = (
|
||||
f"🎯 <b>همه کانالهای مقصد ({len(targets)} کانال)</b>\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")]
|
||||
|
||||
Reference in New Issue
Block a user