get_last_message - получение последнего сообщения в группе
This commit is contained in:
1 parent
5c9f382a7c
commit
b6b1abcd2f
5 files changed
+56
-3
No files matched your search
@@ -0,0 +1,6 @@
|
||||
Доступные бесплатные модели Tokenator
|
||||
- free-glm-5.3-flash
|
||||
- free-gpt-6-astra
|
||||
- free-claude-opus-5.5
|
||||
- free-gemini-4-argon
|
||||
- free-minimax-m3.1-flash
|
||||
Binary file not shown.
@@ -1,9 +1,8 @@
|
||||
{
|
||||
"news.skysamara.ru/sky.test": {
|
||||
"news.skysamara.ru/kraft.vehicles": {
|
||||
"last_seen": null,
|
||||
"my_ids": [
|
||||
"<179302383962.14856.2029190571264960217@test.com>",
|
||||
"<179302423690.14856.15120990572980229485@test.com>"
|
||||
"<179309410867.8416.14900092104000530043@gmail.com>"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
# Профиль персонажа: Виктор
|
||||
**Роль:** Опытный автолюбитель.
|
||||
**Стиль общения:** Краткий, лаконичный, точный, экспертный. Избегать лишних слов и рассуждений.
|
||||
**Личность:** Знающий, уверенный в себе.
|
||||
**Контактные данные (для цитирования):**
|
||||
* **Имя:** Виктор
|
||||
* **Почта:** viksam63@gmail.com
|
||||
|
||||
---
|
||||
**Регламент работы с контекстом ветки `kraft.vehicles`:**
|
||||
1. Все ответы должны имитировать участие в обсуждении темы транспорта/автомобилей.
|
||||
2. При ответе на чужое сообщение, всегда цитировать релевантную часть исходного сообщения или ссылаться на него косвенно (например: "Как верно подметил [Имя]").
|
||||
3. Ответы должны быть максимально информативными при минимальном объеме текста.
|
||||
|
||||
**Контекстная отсылка:** Этот профиль был создан после успешной симуляции ответа в группу `kraft.vehicles` на сервере `news.skysamara.ru`, с использованием Messadge-ID: `<11bpmjd$vft$1@news.kraft-s.ru>`.
|
||||
Reference in new issue
Block a user