Reduce ingestion buffering and improve author metadata fallback.

Flush context blocks faster to avoid delayed indexing and use sender_id-based labels when Telegram sender objects are unavailable in historical messages.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-26 12:46:24 +03:00
parent 12b9992079
commit b2874ff580
3 changed files with 21 additions and 12 deletions

View File

@@ -57,13 +57,15 @@ client = TelegramClient(
auto_reconnect=True,
)
def build_author(sender) -> dict:
def build_author(sender, sender_id=None) -> dict:
effective_id = str(sender_id or 0)
if not sender:
unknown_label = f"id:{effective_id}" if effective_id != "0" else "Unknown"
return {
"id": "0",
"id": effective_id,
"username": "",
"display_name": "Unknown",
"label": "Unknown",
"label": unknown_label,
}
username = getattr(sender, "username", "") or ""
display_name = (
@@ -71,8 +73,11 @@ def build_author(sender) -> dict:
or "Unknown"
)
label = f"@{username}" if username else display_name
sender_obj_id = str(getattr(sender, "id", None) or sender_id or 0)
if label == "Unknown" and sender_obj_id != "0":
label = f"id:{sender_obj_id}"
return {
"id": str(getattr(sender, "id", 0)),
"id": sender_obj_id,
"username": username,
"display_name": display_name,
"label": label,
@@ -105,10 +110,14 @@ def extract_attachment(message) -> dict:
async def send_to_n8n(message):
sender = message.sender or await message.get_sender()
author = build_author(sender)
author = build_author(sender, message.sender_id)
reply_message = await message.get_reply_message() if message.reply_to_msg_id else None
reply_sender = await reply_message.get_sender() if reply_message else None
reply_author = build_author(reply_sender) if reply_sender else None
reply_author = (
build_author(reply_sender, getattr(reply_message, "sender_id", None))
if reply_message
else None
)
data = {
"text": message.text,