Improve Telegram forum onboarding and topic safety
This commit is contained in:
parent
2b56b98697
commit
a1b7a14138
13 changed files with 1101 additions and 376 deletions
|
|
@ -3,6 +3,7 @@ from __future__ import annotations
|
|||
|
||||
from aiogram.types import Message
|
||||
|
||||
from adapter.telegram import db
|
||||
from core.protocol import Attachment, IncomingMessage, OutgoingEvent, OutgoingMessage, OutgoingUI
|
||||
|
||||
|
||||
|
|
@ -16,6 +17,21 @@ def from_message(message: Message, chat_id: str) -> IncomingMessage:
|
|||
)
|
||||
|
||||
|
||||
def is_forum_message(message: Message) -> bool:
|
||||
return getattr(message, "message_thread_id", None) is not None
|
||||
|
||||
|
||||
def resolve_forum_chat_id(message: Message, tg_user_id: int) -> str | None:
|
||||
thread_id = getattr(message, "message_thread_id", None)
|
||||
if thread_id is None:
|
||||
return None
|
||||
|
||||
chat = db.get_chat_by_thread(tg_user_id, thread_id)
|
||||
if not chat:
|
||||
return None
|
||||
return chat["chat_id"]
|
||||
|
||||
|
||||
def _extract_attachments(message: Message) -> list[Attachment]:
|
||||
attachments: list[Attachment] = []
|
||||
if message.photo:
|
||||
|
|
@ -41,10 +57,10 @@ def _extract_attachments(message: Message) -> list[Attachment]:
|
|||
return attachments
|
||||
|
||||
|
||||
def format_outgoing(chat_name: str, event: OutgoingEvent) -> str:
|
||||
prefix = f"[{chat_name}] "
|
||||
def format_outgoing(chat_name: str, event: OutgoingEvent, *, prefix: bool = True) -> str:
|
||||
rendered_prefix = f"[{chat_name}] " if prefix else ""
|
||||
if isinstance(event, OutgoingMessage):
|
||||
return prefix + event.text
|
||||
return rendered_prefix + event.text
|
||||
if isinstance(event, OutgoingUI):
|
||||
return prefix + event.text
|
||||
return prefix + str(event)
|
||||
return rendered_prefix + event.text
|
||||
return rendered_prefix + str(event)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue