This commit is contained in:
2025-08-17 14:15:46 +09:00
parent 5592014530
commit e5c3f79d2e
8 changed files with 1074 additions and 511 deletions

View File

@@ -392,19 +392,31 @@ class EditorWizard:
return -1
async def tpl_list(self, update: Update, context: CallbackContext):
if not update.effective_user:
return -1
uid = update.effective_user.id
if update.callback_query and update.callback_query.data:
q = update.callback_query
if not q:
return -1
await q.answer()
page = int(q.data.split(":", 1)[1]) if ":" in q.data else 0
return await self._render_tpl_list(q, uid, page)
if not context or not context.user_data:
return -1
context.user_data["tpl_page"] = 0
return await self._render_tpl_list(update.message, update.effective_user.id, page=0)
async def tpl_confirm_delete(self, update: Update, context: CallbackContext):
from .keyboards import KbBuilder # локальный импорт уже есть, просто используем метод
q = update.callback_query
await q.answer()
tpl_id = int(q.data.split(":", 1)[1])
await q.edit_message_text("Удалить шаблон?", reply_markup=KbBuilder.tpl_confirm_delete(tpl_id))
return States.TPL_CONFIRM_DELETE
return await self._render_tpl_list(update.message, uid, page=0)
async def tpl_delete_ok(self, update: Update, context: CallbackContext):
if not update.callback_query or not update.effective_user:
return -1
q = update.callback_query
if not q.data:
return -1
await q.answer()
uid = update.effective_user.id
tpl_id = int(q.data.split(":", 1)[1])
@@ -417,7 +429,7 @@ class EditorWizard:
async def _render_preview_and_confirm(self, q_or_msg, uid: int, name: str, ctx_vars: dict):
rendered = await render_template_by_name(owner_id=uid, name=name, ctx=ctx_vars)
text = rendered["text"]
parse_mode = rendered.get("parse_mode") or self.sessions.get(uid).parse_mode or "HTML"
parse_mode = rendered.get("parse_mode") or (self.sessions.get(uid).parse_mode if self.sessions.get(uid) else None) or "HTML"
if hasattr(q_or_msg, "edit_message_text"):
await q_or_msg.edit_message_text(f"Предпросмотр:\n\n{text[:3500]}", parse_mode=parse_mode)
@@ -454,12 +466,13 @@ class EditorWizard:
return
token = settings.editor_bot_token
payload = build_payload(
ptype=s.type,
text=s.text,
ptype=str(s.type or "text"),
text=s.text or "",
media_file_id=s.media_file_id,
parse_mode=s.parse_mode or "HTML",
keyboard=s.keyboard,
)
from app.tasks.senders import send_post_task
send_post_task.delay(token, s.channel_id, payload)
await qmsg.edit_message_text("Отправка запущена.")
@@ -467,12 +480,13 @@ class EditorWizard:
s = self.sessions.get(uid)
token = settings.editor_bot_token
payload = build_payload(
ptype=s.type,
text=s.text,
ptype=str(s.type or "text"),
text=s.text or "",
media_file_id=s.media_file_id,
parse_mode=s.parse_mode or "HTML",
keyboard=s.keyboard,
)
from app.tasks.senders import send_post_task
send_post_task.apply_async(args=[token, s.channel_id, payload], eta=when)
@staticmethod