get_last_message - получение последнего сообщения в группе
This commit is contained in:
1 parent
5c9f382a7c
commit
b6b1abcd2f
5 files changed
+56
-3
No files matched your search
@@ -335,6 +335,38 @@ def read_thread(server: str = DEFAULT_SERVER, group: str = "",
|
||||
return {"error": str(e)}
|
||||
|
||||
|
||||
def get_last_message(server: str = DEFAULT_SERVER, group: str = "",
|
||||
port: int = DEFAULT_PORT) -> dict:
|
||||
"""
|
||||
ПОСЛЕДНЕЕ СООБЩЕНИЕ: запрашивает у NNTP-сервера максимальный номер статьи
|
||||
в группе и возвращает это сообщение целиком: номер, Message-ID, тему,
|
||||
автора, дату и тело (очищенное от цитат).
|
||||
"""
|
||||
if not group:
|
||||
return {"error": "Не указана группа (group)"}
|
||||
try:
|
||||
with _connect(server, port) as s:
|
||||
_, count, first, last, _ = s.group(group)
|
||||
count, last = int(count), int(last)
|
||||
|
||||
if count == 0:
|
||||
return {"status": "empty", "group": group,
|
||||
"error": "В группе нет сообщений"}
|
||||
|
||||
msg = email.message_from_bytes(b"\n".join(s.article(str(last))[1].lines),
|
||||
policy=email_policy)
|
||||
msgid = (msg.get("Message-ID") or f"<local-{last}>").strip()
|
||||
|
||||
return {"status": "ok", "group": group, "num": last, "msgid": msgid,
|
||||
"subject": _decode(msg.get("Subject", "")),
|
||||
"from": _decode(msg.get("From", "")),
|
||||
"date": _parse_date(str(msg.get("Date", ""))),
|
||||
"body": _clean_quotes(_extract_body(msg))}
|
||||
except Exception as e:
|
||||
return {"status": "error", "group": group,
|
||||
"error": f"Ошибка получения последнего сообщения: {e}"}
|
||||
|
||||
|
||||
def post_reply(server: str = DEFAULT_SERVER, group: str = "",
|
||||
reply_to_msg_id: str = "", body: str = "",
|
||||
sender_name: str = "", sender_email: str = "",
|
||||
@@ -403,6 +435,7 @@ def list_groups(server: str = DEFAULT_SERVER,
|
||||
# Безопасная централизованная регистрация инструментов через прокси-функцию
|
||||
scan_group = register_mcp_tool(scan_group)
|
||||
read_thread = register_mcp_tool(read_thread)
|
||||
get_last_message = register_mcp_tool(get_last_message)
|
||||
post_reply = register_mcp_tool(post_reply)
|
||||
list_groups = register_mcp_tool(list_groups)
|
||||
|
||||
|
||||
Reference in new issue
Block a user