mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-06-13 03:30:51 +08:00
fix: 统一消息 typing 生命周期
This commit is contained in:
@@ -15,7 +15,6 @@ from app.schemas import (
|
||||
CommandRegisterEventData,
|
||||
NotificationConf,
|
||||
MessageResponse,
|
||||
NotificationType,
|
||||
)
|
||||
from app.schemas.types import ModuleType, ChainEventType
|
||||
from app.utils.structures import DictUtils
|
||||
@@ -452,7 +451,6 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
return
|
||||
client: Telegram = self.get_instance(conf.name)
|
||||
if client:
|
||||
stop_typing = message.mtype != NotificationType.Agent
|
||||
if message.file_path:
|
||||
client.send_file(
|
||||
file_path=message.file_path,
|
||||
@@ -461,7 +459,6 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
text=message.text,
|
||||
userid=userid,
|
||||
original_chat_id=message.original_chat_id,
|
||||
stop_typing=stop_typing,
|
||||
)
|
||||
elif message.voice_path:
|
||||
client.send_voice(
|
||||
@@ -469,7 +466,6 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
userid=userid,
|
||||
caption=message.voice_caption,
|
||||
original_chat_id=message.original_chat_id,
|
||||
stop_typing=stop_typing,
|
||||
)
|
||||
else:
|
||||
client.send_msg(
|
||||
@@ -482,7 +478,6 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
original_message_id=message.original_message_id,
|
||||
original_chat_id=message.original_chat_id,
|
||||
disable_web_page_preview=message.disable_web_page_preview,
|
||||
stop_typing=stop_typing,
|
||||
)
|
||||
|
||||
def post_medias_message(
|
||||
@@ -507,7 +502,6 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
buttons=message.buttons,
|
||||
original_message_id=message.original_message_id,
|
||||
original_chat_id=message.original_chat_id,
|
||||
stop_typing=message.mtype != NotificationType.Agent,
|
||||
)
|
||||
|
||||
def post_torrents_message(
|
||||
@@ -532,7 +526,6 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
buttons=message.buttons,
|
||||
original_message_id=message.original_message_id,
|
||||
original_chat_id=message.original_chat_id,
|
||||
stop_typing=message.mtype != NotificationType.Agent,
|
||||
)
|
||||
|
||||
def delete_message(
|
||||
@@ -616,11 +609,18 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
) -> Optional[dict]:
|
||||
"""
|
||||
标记 Telegram 消息正在处理。
|
||||
入站侧已经启动 typing 任务,这里只返回可用于统一收口的上下文。
|
||||
Telegram typing 需要周期性续发,因此在模块接口中启动保活任务。
|
||||
"""
|
||||
if channel != self._channel:
|
||||
return None
|
||||
if not text:
|
||||
client_config = self.get_config(source)
|
||||
if not client_config:
|
||||
return None
|
||||
client: Telegram = self.get_instance(client_config.name)
|
||||
if not client:
|
||||
return None
|
||||
started = client.start_typing(chat_id=chat_id, userid=userid)
|
||||
if not started:
|
||||
return None
|
||||
return {
|
||||
"channel": channel.value,
|
||||
@@ -674,14 +674,12 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
return None
|
||||
client: Telegram = self.get_instance(conf.name)
|
||||
if client:
|
||||
agent_managed_typing = message.mtype == NotificationType.Agent
|
||||
if message.voice_path:
|
||||
result = client.send_voice(
|
||||
voice_path=message.voice_path,
|
||||
userid=userid,
|
||||
caption=message.voice_caption,
|
||||
original_chat_id=message.original_chat_id,
|
||||
stop_typing=not agent_managed_typing,
|
||||
)
|
||||
else:
|
||||
result = client.send_msg(
|
||||
@@ -691,7 +689,6 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
userid=userid,
|
||||
link=message.link,
|
||||
disable_web_page_preview=message.disable_web_page_preview,
|
||||
stop_typing=not agent_managed_typing,
|
||||
)
|
||||
if result and result.get("success"):
|
||||
return MessageResponse(
|
||||
@@ -699,9 +696,6 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
|
||||
chat_id=result.get("chat_id"),
|
||||
channel=MessageChannel.Telegram,
|
||||
source=conf.name,
|
||||
metadata={"agent_managed_typing": True}
|
||||
if agent_managed_typing
|
||||
else None,
|
||||
success=True,
|
||||
)
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user