post management returned
This commit is contained in:
@@ -7,15 +7,24 @@ from app.db.models import Draft, Chat, Delivery, User
|
||||
from app.bot.keyboards.common import kb_multiselect # ← только мультивыбор
|
||||
from app.bot.messages import NEED_MEDIA_BEFORE_NEXT, NO_SELECTION, SENT_SUMMARY
|
||||
from app.moderation.engine import check_message_allowed
|
||||
import logging
|
||||
|
||||
# ИМПОРТИРУЕМ КОНСТАНТЫ ИЗ drafts.py, чтобы не промахнуться с ключами
|
||||
from app.bot.handlers.drafts import (
|
||||
STATE_DRAFT, STATE_AWAIT_TEXT, STATE_CONFIRM,
|
||||
KEY_DRAFT_ID,
|
||||
)
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
async def on_callback(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
|
||||
q = update.callback_query
|
||||
await q.answer()
|
||||
data = q.data
|
||||
|
||||
log.debug("callbacks:on_callback data=%s", data)
|
||||
# --- Переход с медиа на текст ---
|
||||
if data.startswith("draft_next_text:"):
|
||||
draft_id = int(data.split(":")[1])
|
||||
|
||||
with get_session() as s:
|
||||
d = s.get(Draft, draft_id)
|
||||
if not d:
|
||||
@@ -24,9 +33,23 @@ async def on_callback(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
|
||||
if len(d.media) == 0:
|
||||
await q.edit_message_text(NEED_MEDIA_BEFORE_NEXT)
|
||||
return
|
||||
ctx.user_data["draft_id"] = draft_id
|
||||
ctx.user_data["draft_state"] = "await_text"
|
||||
|
||||
# Сброс «залипших» режимов (если были)
|
||||
for k in ("await_dict_file", "dict_params", "await_chat_id"):
|
||||
ctx.user_data.pop(k, None)
|
||||
|
||||
# ЯВНО ПРОСТАВЛЯЕМ draft_id и состояние await_text через общие константы
|
||||
ctx.user_data[KEY_DRAFT_ID] = draft_id
|
||||
ctx.user_data[STATE_DRAFT] = STATE_AWAIT_TEXT
|
||||
|
||||
log.info("callbacks:draft_next_text user=%s chat=%s -> draft_id=%s state=%s",
|
||||
getattr(update.effective_user, "id", None),
|
||||
getattr(update.effective_chat, "id", None),
|
||||
draft_id, ctx.user_data.get(STATE_DRAFT))
|
||||
|
||||
await q.edit_message_text("Шаг 2/3 — текст.\nОтправьте текст поста.")
|
||||
return
|
||||
|
||||
|
||||
# --- Подтверждение -> мультивыбор чатов ---
|
||||
elif data.startswith("draft_confirm_send:"):
|
||||
@@ -170,3 +193,6 @@ async def on_callback(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
|
||||
ctx.user_data.pop("draft_id", None)
|
||||
ctx.user_data.pop("draft_state", None)
|
||||
await q.edit_message_text("Черновик отменён.")
|
||||
else:
|
||||
await q.edit_message_text("Неизвестная команда.")
|
||||
log.warning("callbacks:unhandled data=%s", data)
|
||||
Reference in New Issue
Block a user