Bot become a Community Guard & Post send manager
added: dictionary support for censore message/user management with dict triggers
This commit is contained in:
@@ -2,19 +2,18 @@ from datetime import datetime
|
||||
from telegram import Update
|
||||
from telegram.constants import ChatType
|
||||
from telegram.ext import ContextTypes
|
||||
|
||||
from app.db.session import get_session
|
||||
from app.db.models import Draft, DraftMedia
|
||||
from app.bot.messages import MEDIA_ADDED, ALREADY_AT_TEXT, NEED_START_NEW
|
||||
from .drafts import KEY_DRAFT_ID, STATE_DRAFT, STATE_AWAIT_MEDIA, STATE_AWAIT_TEXT, STATE_CONFIRM
|
||||
from .add_group import add_group_capture, STATE_KEY # перехват для /add_group
|
||||
|
||||
from app.bot.messages import MEDIA_ADDED, NEED_START_NEW
|
||||
from app.bot.keyboards.common import kb_next_text
|
||||
from .drafts import KEY_DRAFT_ID, STATE_DRAFT, STATE_AWAIT_MEDIA
|
||||
from .add_group import add_group_capture, STATE_KEY
|
||||
|
||||
async def on_media(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
|
||||
if update.effective_chat.type != ChatType.PRIVATE:
|
||||
return
|
||||
|
||||
# Если пользователь сейчас привязывает чат — используем пересланное медиа для извлечения chat_id
|
||||
# Если сейчас идёт привязка чата — используем пересланное сообщение
|
||||
if ctx.user_data.get(STATE_KEY):
|
||||
return await add_group_capture(update, ctx)
|
||||
|
||||
@@ -26,8 +25,7 @@ async def on_media(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
|
||||
return
|
||||
|
||||
if state != STATE_AWAIT_MEDIA:
|
||||
# Уже перешли к тексту/подтверждению — блокируем добавление медиа
|
||||
await update.effective_message.reply_text(ALREADY_AT_TEXT if state == STATE_AWAIT_TEXT else "Редактор на шаге подтверждения.")
|
||||
await update.effective_message.reply_text("Медиа можно добавлять только на шаге 1.")
|
||||
return
|
||||
|
||||
kind = None
|
||||
@@ -44,8 +42,12 @@ async def on_media(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
|
||||
with get_session() as s:
|
||||
d = s.get(Draft, draft_id)
|
||||
order = len(d.media)
|
||||
m = DraftMedia(draft_id=d.id, kind=kind, file_id=file_id, order=order)
|
||||
s.add(m); d.updated_at = datetime.utcnow()
|
||||
s.add(DraftMedia(draft_id=d.id, kind=kind, file_id=file_id, order=order))
|
||||
d.updated_at = datetime.utcnow()
|
||||
s.commit()
|
||||
|
||||
await update.effective_message.reply_text(MEDIA_ADDED.format(kind=kind))
|
||||
# Показываем кнопку «Дальше — текст» прямо под сообщением «Медиа добавлено»
|
||||
await update.effective_message.reply_text(
|
||||
MEDIA_ADDED.format(kind=kind),
|
||||
reply_markup=kb_next_text(draft_id)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user