This commit is contained in:
jxxghp
2025-06-22 08:47:43 +08:00
parent 682f4fe608
commit 9e4ec5841c

View File

@@ -528,101 +528,26 @@ class MessageChain(ChainBase):
return
# 解析系统回调数据
if callback_data.startswith("page_"):
# 翻页操作
self._handle_page_callback(callback_data=callback_data, channel=channel,
source=source, userid=userid,
original_message_id=original_message_id, original_chat_id=original_chat_id)
elif callback_data.startswith("select_"):
# 选择操作或翻页操作
if callback_data in ["select_p", "select_n"]:
# 翻页操作
page_text = callback_data.split("_")[1] # 提取 "p" 或 "n"
self.handle_message(channel=channel, source=source,
userid=userid, username=username,
try:
page_text = callback_data.split("_", 1)[1]
if callback_data.startswith('page_'):
# 翻页操作原位更新消息
self.handle_message(channel=channel, source=source, userid=userid, username=username,
text=page_text,
original_message_id=original_message_id, original_chat_id=original_chat_id)
else:
# 选择操作
self._handle_select_callback(callback_data=callback_data, channel=channel,
source=source, userid=userid, username=username)
elif callback_data.startswith("download_"):
# 下载操作
self._handle_download_callback(callback_data=callback_data, channel=channel,
source=source, userid=userid, username=username)
elif callback_data.startswith("subscribe_"):
# 订阅操作
self._handle_subscribe_callback(callback_data=callback_data, channel=channel,
source=source, userid=userid, username=username)
else:
# 其他自定义回调
logger.info(f"未知的回调数据:{callback_data}")
def _handle_page_callback(self, callback_data: str, channel: MessageChannel, source: str,
userid: Union[str, int], original_message_id: Optional[Union[str, int]],
original_chat_id: Optional[str]):
"""
处理翻页回调
"""
try:
page = int(callback_data.split("_")[1])
# 获取当前页面
global _current_page
# 判断是上一页还是下一页
if page < _current_page:
# 上一页,调用原来的 "p" 逻辑
self.handle_message(channel=channel, source=source, userid=userid,
username="", text="p",
original_message_id=original_message_id, original_chat_id=original_chat_id)
elif page > _current_page:
# 下一页,调用原来的 "n" 逻辑
self.handle_message(channel=channel, source=source, userid=userid,
username="", text="n",
original_message_id=original_message_id, original_chat_id=original_chat_id)
except (ValueError, IndexError) as e:
logger.error(f"处理翻页回调失败:{e}")
def _handle_select_callback(self, callback_data: str, channel: MessageChannel, source: str,
userid: Union[str, int], username: str) -> None:
"""
处理选择回调
"""
try:
index = int(callback_data.split("_")[1])
# 调用原有的数字选择逻辑
self.handle_message(channel=channel, source=source, userid=userid, username=username, text=str(index + 1))
except (ValueError, IndexError) as e:
logger.error(f"处理选择回调失败:{e}")
def _handle_download_callback(self, callback_data: str, channel: MessageChannel, source: str,
userid: Union[str, int], username: str) -> None:
"""
处理下载回调
"""
try:
if callback_data == "download_auto":
# 自动选择下载
self.handle_message(channel=channel, source=source, userid=userid, username=username, text="0")
else:
index = int(callback_data.split("_")[1])
# 发送新消息
self.handle_message(channel=channel, source=source, userid=userid, username=username,
text=str(index + 1))
except (ValueError, IndexError) as e:
logger.error(f"处理下载回调失败:{e}")
def _handle_subscribe_callback(self, callback_data: str, channel: MessageChannel, source: str,
userid: Union[str, int], username: str) -> None:
"""
处理订阅回调
"""
try:
index = int(callback_data.split("_")[1])
self.handle_message(channel=channel, source=source, userid=userid, username=username, text=str(index + 1))
except (ValueError, IndexError) as e:
logger.error(f"处理订阅回调失败:{e}")
text=page_text)
except IndexError:
logger.error(f"回调数据格式错误:{callback_data}")
self.post_message(Notification(
channel=channel,
source=source,
userid=userid,
username=username,
title="回调数据格式错误,请检查!"
))
def __auto_download(self, channel: MessageChannel, source: str, cache_list: list[Context],
userid: Union[str, int], username: str,
@@ -737,7 +662,7 @@ class MessageChain(ChainBase):
buttons.append([{
"text": button_text,
"callback_data": f"select_{i}"
"callback_data": f"select_{i + 1}"
}])
else:
# 多按钮一行的情况,使用简化文本
@@ -745,7 +670,7 @@ class MessageChain(ChainBase):
current_row.append({
"text": button_text,
"callback_data": f"select_{i}"
"callback_data": f"select_{i + 1}"
})
# 如果当前行已满或者是最后一个按钮,添加到按钮列表
@@ -757,9 +682,9 @@ class MessageChain(ChainBase):
if total > self._page_size:
page_buttons = []
if _current_page > 0:
page_buttons.append({"text": "⬅️ 上一页", "callback_data": "select_p"})
page_buttons.append({"text": "⬅️ 上一页", "callback_data": "page_p"})
if (_current_page + 1) * self._page_size < total:
page_buttons.append({"text": "下一页 ➡️", "callback_data": "select_n"})
page_buttons.append({"text": "下一页 ➡️", "callback_data": "page_n"})
if page_buttons:
buttons.append(page_buttons)
@@ -816,7 +741,7 @@ class MessageChain(ChainBase):
max_per_row = ChannelCapabilityManager.get_max_buttons_per_row(channel)
# 自动选择按钮
buttons.append([{"text": "🤖 自动选择下载", "callback_data": "download_auto"}])
buttons.append([{"text": "🤖 自动选择下载", "callback_data": "download_0"}])
# 为每个种子项创建下载按钮
current_row = []
@@ -832,7 +757,7 @@ class MessageChain(ChainBase):
buttons.append([{
"text": button_text,
"callback_data": f"download_{i}"
"callback_data": f"download_{i + 1}"
}])
else:
# 多按钮一行的情况,使用简化文本
@@ -840,7 +765,7 @@ class MessageChain(ChainBase):
current_row.append({
"text": button_text,
"callback_data": f"download_{i}"
"callback_data": f"download_{i + 1}"
})
# 如果当前行已满或者是最后一个按钮,添加到按钮列表
@@ -852,9 +777,9 @@ class MessageChain(ChainBase):
if total > self._page_size:
page_buttons = []
if _current_page > 0:
page_buttons.append({"text": "⬅️ 上一页", "callback_data": "select_p"})
page_buttons.append({"text": "⬅️ 上一页", "callback_data": "page_p"})
if (_current_page + 1) * self._page_size < total:
page_buttons.append({"text": "下一页 ➡️", "callback_data": "select_n"})
page_buttons.append({"text": "下一页 ➡️", "callback_data": "page_n"})
if page_buttons:
buttons.append(page_buttons)