mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-08 17:08:35 +08:00
修复:slack消息交互
This commit is contained in:
@@ -126,7 +126,7 @@ class MessageChain(ChainBase):
|
|||||||
|
|
||||||
def handle_message(self, channel: MessageChannel, source: str,
|
def handle_message(self, channel: MessageChannel, source: str,
|
||||||
userid: Union[str, int], username: str, text: str,
|
userid: Union[str, int], username: str, text: str,
|
||||||
original_message_id: Optional[int] = None,
|
original_message_id: Optional[Union[str, int]] = None,
|
||||||
original_chat_id: Optional[str] = None) -> None:
|
original_chat_id: Optional[str] = None) -> None:
|
||||||
"""
|
"""
|
||||||
识别消息内容,执行操作
|
识别消息内容,执行操作
|
||||||
@@ -502,7 +502,7 @@ class MessageChain(ChainBase):
|
|||||||
|
|
||||||
def _handle_callback(self, text: str, channel: MessageChannel, source: str,
|
def _handle_callback(self, text: str, channel: MessageChannel, source: str,
|
||||||
userid: Union[str, int], username: str,
|
userid: Union[str, int], username: str,
|
||||||
original_message_id: Optional[int] = None,
|
original_message_id: Optional[Union[str, int]] = None,
|
||||||
original_chat_id: Optional[str] = None) -> None:
|
original_chat_id: Optional[str] = None) -> None:
|
||||||
"""
|
"""
|
||||||
处理按钮回调
|
处理按钮回调
|
||||||
@@ -554,7 +554,7 @@ class MessageChain(ChainBase):
|
|||||||
logger.info(f"未知的回调数据:{callback_data}")
|
logger.info(f"未知的回调数据:{callback_data}")
|
||||||
|
|
||||||
def _handle_page_callback(self, callback_data: str, channel: MessageChannel, source: str,
|
def _handle_page_callback(self, callback_data: str, channel: MessageChannel, source: str,
|
||||||
userid: Union[str, int], original_message_id: Optional[int],
|
userid: Union[str, int], original_message_id: Optional[Union[str, int]],
|
||||||
original_chat_id: Optional[str]):
|
original_chat_id: Optional[str]):
|
||||||
"""
|
"""
|
||||||
处理翻页回调
|
处理翻页回调
|
||||||
@@ -669,7 +669,7 @@ class MessageChain(ChainBase):
|
|||||||
|
|
||||||
def __post_medias_message(self, channel: MessageChannel, source: str,
|
def __post_medias_message(self, channel: MessageChannel, source: str,
|
||||||
title: str, items: list, userid: str, total: int,
|
title: str, items: list, userid: str, total: int,
|
||||||
original_message_id: Optional[int] = None,
|
original_message_id: Optional[Union[str, int]] = None,
|
||||||
original_chat_id: Optional[str] = None):
|
original_chat_id: Optional[str] = None):
|
||||||
"""
|
"""
|
||||||
发送媒体列表消息
|
发送媒体列表消息
|
||||||
@@ -758,7 +758,7 @@ class MessageChain(ChainBase):
|
|||||||
|
|
||||||
def __post_torrents_message(self, channel: MessageChannel, source: str,
|
def __post_torrents_message(self, channel: MessageChannel, source: str,
|
||||||
title: str, items: list, userid: str, total: int,
|
title: str, items: list, userid: str, total: int,
|
||||||
original_message_id: Optional[int] = None,
|
original_message_id: Optional[Union[str, int]] = None,
|
||||||
original_chat_id: Optional[str] = None):
|
original_chat_id: Optional[str] = None):
|
||||||
"""
|
"""
|
||||||
发送种子列表消息
|
发送种子列表消息
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class Slack:
|
|||||||
with requests.post(self._ds_url, json=message, timeout=10) as local_res:
|
with requests.post(self._ds_url, json=message, timeout=10) as local_res:
|
||||||
logger.debug("message: %s processed, response is: %s" % (message, local_res.text))
|
logger.debug("message: %s processed, response is: %s" % (message, local_res.text))
|
||||||
|
|
||||||
@slack_app.action(re.compile(r"actionId-\d+"))
|
@slack_app.action(re.compile(r"actionId-.*"))
|
||||||
def slack_action(ack, body):
|
def slack_action(ack, body):
|
||||||
ack()
|
ack()
|
||||||
with requests.post(self._ds_url, json=body, timeout=60) as local_res:
|
with requests.post(self._ds_url, json=body, timeout=60) as local_res:
|
||||||
@@ -258,6 +258,10 @@ class Slack:
|
|||||||
"type": "divider"
|
"type": "divider"
|
||||||
})
|
})
|
||||||
index = 1
|
index = 1
|
||||||
|
|
||||||
|
# 如果有自定义按钮,先添加所有媒体项,然后添加统一的按钮
|
||||||
|
if buttons:
|
||||||
|
# 添加媒体列表(不带单独的选择按钮)
|
||||||
for media in medias:
|
for media in medias:
|
||||||
if media.get_poster_image():
|
if media.get_poster_image():
|
||||||
if media.vote_star:
|
if media.vote_star:
|
||||||
@@ -283,9 +287,9 @@ class Slack:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
# 如果有自定义按钮,使用自定义按钮,否则使用默认选择按钮
|
index += 1
|
||||||
if buttons:
|
|
||||||
# 使用自定义按钮(通常来自MessageChain的智能生成)
|
# 添加统一的自定义按钮(在所有媒体项之后)
|
||||||
for button_row in buttons:
|
for button_row in buttons:
|
||||||
elements = []
|
elements = []
|
||||||
for button in button_row:
|
for button in button_row:
|
||||||
@@ -316,9 +320,33 @@ class Slack:
|
|||||||
"type": "actions",
|
"type": "actions",
|
||||||
"elements": elements
|
"elements": elements
|
||||||
})
|
})
|
||||||
# 只为第一个媒体项添加按钮,避免重复
|
|
||||||
buttons = None
|
|
||||||
else:
|
else:
|
||||||
|
# 使用默认的每个媒体项单独按钮
|
||||||
|
for media in medias:
|
||||||
|
if media.get_poster_image():
|
||||||
|
if media.vote_star:
|
||||||
|
text = f"{index}. *<{media.detail_link}|{media.title_year}>*" \
|
||||||
|
f"\n类型:{media.type.value}" \
|
||||||
|
f"\n{media.vote_star}" \
|
||||||
|
f"\n{media.get_overview_string(50)}"
|
||||||
|
else:
|
||||||
|
text = f"{index}. *<{media.detail_link}|{media.title_year}>*" \
|
||||||
|
f"\n类型:{media.type.value}" \
|
||||||
|
f"\n{media.get_overview_string(50)}"
|
||||||
|
blocks.append(
|
||||||
|
{
|
||||||
|
"type": "section",
|
||||||
|
"text": {
|
||||||
|
"type": "mrkdwn",
|
||||||
|
"text": text
|
||||||
|
},
|
||||||
|
"accessory": {
|
||||||
|
"type": "image",
|
||||||
|
"image_url": f"{media.get_poster_image()}",
|
||||||
|
"alt_text": f"{media.title_year}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
# 使用默认选择按钮
|
# 使用默认选择按钮
|
||||||
blocks.append(
|
blocks.append(
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class CommingMessage(BaseModel):
|
|||||||
# 回调数据
|
# 回调数据
|
||||||
callback_data: Optional[str] = None
|
callback_data: Optional[str] = None
|
||||||
# 消息ID(用于回调时定位原消息)
|
# 消息ID(用于回调时定位原消息)
|
||||||
message_id: Optional[int] = None
|
message_id: Optional[Union[str, int]] = None
|
||||||
# 聊天ID(用于回调时定位聊天)
|
# 聊天ID(用于回调时定位聊天)
|
||||||
chat_id: Optional[str] = None
|
chat_id: Optional[str] = None
|
||||||
# 完整的回调查询信息(原始数据)
|
# 完整的回调查询信息(原始数据)
|
||||||
@@ -80,7 +80,7 @@ class Notification(BaseModel):
|
|||||||
# 按钮列表,格式:[[{"text": "按钮文本", "callback_data": "回调数据", "url": "链接"}]]
|
# 按钮列表,格式:[[{"text": "按钮文本", "callback_data": "回调数据", "url": "链接"}]]
|
||||||
buttons: Optional[List[List[dict]]] = None
|
buttons: Optional[List[List[dict]]] = None
|
||||||
# 原消息ID,用于编辑消息
|
# 原消息ID,用于编辑消息
|
||||||
original_message_id: Optional[int] = None
|
original_message_id: Optional[Union[str, int]] = None
|
||||||
# 原消息的聊天ID,用于编辑消息
|
# 原消息的聊天ID,用于编辑消息
|
||||||
original_chat_id: Optional[str] = None
|
original_chat_id: Optional[str] = None
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user