mirror of
https://github.com/Nezumi-2711/astrbot_plugin_qq_group_daily_analysis.git
synced 2026-09-22 13:38:43 +00:00
@@ -522,8 +522,8 @@ class GroupDailyAnalysis(Star):
|
|||||||
yield event.plain_result("🔍 正在启动分析引擎,正在拉取最近消息...")
|
yield event.plain_result("🔍 正在启动分析引擎,正在拉取最近消息...")
|
||||||
elif adapter and orig_msg_id:
|
elif adapter and orig_msg_id:
|
||||||
await adapter.set_reaction(
|
await adapter.set_reaction(
|
||||||
event.get_group_id(), orig_msg_id, "🔍"
|
event.get_group_id(), orig_msg_id, "analysis_started"
|
||||||
) # 🔍
|
)
|
||||||
|
|
||||||
# 调用 DDD 应用级服务
|
# 调用 DDD 应用级服务
|
||||||
result = await self.analysis_service.execute_daily_analysis(
|
result = await self.analysis_service.execute_daily_analysis(
|
||||||
@@ -540,8 +540,8 @@ class GroupDailyAnalysis(Star):
|
|||||||
|
|
||||||
if not use_text_reply and adapter and orig_msg_id:
|
if not use_text_reply and adapter and orig_msg_id:
|
||||||
await adapter.set_reaction(
|
await adapter.set_reaction(
|
||||||
event.get_group_id(), orig_msg_id, "📊"
|
event.get_group_id(), orig_msg_id, "analysis_done"
|
||||||
) # 📊
|
)
|
||||||
|
|
||||||
async for res in self._send_analysis_report(event, result):
|
async for res in self._send_analysis_report(event, result):
|
||||||
yield res
|
yield res
|
||||||
|
|||||||
@@ -764,11 +764,14 @@ class DiscordAdapter(PlatformAdapter):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 映射常见的表情 ID 为文字表情,使分析状态在跨平台保持一致
|
reaction_key = str(emoji)
|
||||||
mapping = {289: "🔍", 424: "📊", 124: "✅"}
|
emoji_to_use = {
|
||||||
emoji_to_use = emoji
|
"analysis_started": "🔍",
|
||||||
if isinstance(emoji, int) or (isinstance(emoji, str) and emoji.isdigit()):
|
"analysis_done": "📊",
|
||||||
emoji_to_use = mapping.get(int(emoji), emoji)
|
"289": "🔍",
|
||||||
|
"124": "📊",
|
||||||
|
"424": "📊",
|
||||||
|
}.get(reaction_key, reaction_key)
|
||||||
|
|
||||||
channel_id = int(group_id)
|
channel_id = int(group_id)
|
||||||
channel = self._discord_client.get_channel(channel_id)
|
channel = self._discord_client.get_channel(channel_id)
|
||||||
|
|||||||
@@ -1377,12 +1377,13 @@ class OneBotAdapter(PlatformAdapter):
|
|||||||
支持 Go-CQHTTP, NapCat, Lagrange 等 OneBot 实现。
|
支持 Go-CQHTTP, NapCat, Lagrange 等 OneBot 实现。
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
# 语义化映射:根据用户喜好精细化 OneBot 端的降级
|
reaction_key = str(emoji)
|
||||||
emoji_id = str(emoji)
|
emoji_id = {
|
||||||
if str(emoji) == "🔍":
|
"analysis_started": "289", # 🫣 表情 (表示任务已接收)
|
||||||
emoji_id = "289" # 🫣 表情 (表示任务已接收)
|
"analysis_done": "124", # 👌 表情 (表示任务处理完成)
|
||||||
elif str(emoji) == "📊":
|
"🔍": "289",
|
||||||
emoji_id = "124" # 👌 表情 (表示任务处理完成)
|
"📊": "124",
|
||||||
|
}.get(reaction_key, reaction_key)
|
||||||
|
|
||||||
await self.bot.call_action(
|
await self.bot.call_action(
|
||||||
"set_msg_emoji_like",
|
"set_msg_emoji_like",
|
||||||
|
|||||||
@@ -909,34 +909,70 @@ class TelegramAdapter(PlatformAdapter):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 映射常见的表情 ID 为文字表情
|
|
||||||
mapping = {289: "🔍", 424: "📊", 124: "✅"}
|
|
||||||
emoji_to_use = emoji
|
|
||||||
if isinstance(emoji, int) or (isinstance(emoji, str) and emoji.isdigit()):
|
|
||||||
emoji_to_use = mapping.get(int(emoji), emoji)
|
|
||||||
|
|
||||||
chat_id, _ = self._parse_group_id(group_id)
|
chat_id, _ = self._parse_group_id(group_id)
|
||||||
|
|
||||||
# 只有开启了库支持且版本符合时才尝试。set_message_reaction 是 Bot API 7.0 (PTB 20.8+) 特性。
|
# 只有开启了库支持且版本符合时才尝试。set_message_reaction 是 Bot API 7.0 (PTB 20.8+) 特性。
|
||||||
if hasattr(client, "set_message_reaction"):
|
if not hasattr(client, "set_message_reaction"):
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not is_add:
|
||||||
try:
|
try:
|
||||||
from telegram import ReactionTypeEmoji
|
from telegram import ReactionTypeEmoji
|
||||||
|
|
||||||
reaction = [ReactionTypeEmoji(emoji=emoji_to_use)] if is_add else []
|
|
||||||
await client.set_message_reaction(
|
await client.set_message_reaction(
|
||||||
chat_id=chat_id,
|
chat_id=chat_id,
|
||||||
message_id=int(message_id),
|
message_id=int(message_id),
|
||||||
reaction=reaction,
|
reaction=[],
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
except ImportError:
|
except ImportError:
|
||||||
# 如果版本太低没有 ReactionTypeEmoji,尝试直接传字符串 (有些实现支持)
|
|
||||||
await client.set_message_reaction(
|
await client.set_message_reaction(
|
||||||
chat_id=chat_id,
|
chat_id=chat_id,
|
||||||
message_id=int(message_id),
|
message_id=int(message_id),
|
||||||
reaction=emoji_to_use if is_add else None,
|
reaction=None,
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
reaction_key = str(emoji)
|
||||||
|
candidates = {
|
||||||
|
"analysis_started": ("👀", "🤔", "👍"),
|
||||||
|
"analysis_done": ("👌", "👍", "🎉"),
|
||||||
|
"🔍": ("👀", "🤔", "👍"),
|
||||||
|
"📊": ("👌", "👍", "🎉"),
|
||||||
|
"289": ("👀", "🤔", "👍"),
|
||||||
|
"124": ("👌", "👍", "🎉"),
|
||||||
|
"424": ("👌", "👍", "🎉"),
|
||||||
|
"✅": ("👌", "👍", "🎉"),
|
||||||
|
}.get(reaction_key, (reaction_key,))
|
||||||
|
|
||||||
|
try:
|
||||||
|
from telegram import ReactionTypeEmoji
|
||||||
|
|
||||||
|
for candidate in candidates:
|
||||||
|
try:
|
||||||
|
await client.set_message_reaction(
|
||||||
|
chat_id=chat_id,
|
||||||
|
message_id=int(message_id),
|
||||||
|
reaction=[ReactionTypeEmoji(emoji=candidate)],
|
||||||
|
)
|
||||||
|
return True
|
||||||
|
except Exception:
|
||||||
|
continue
|
||||||
|
except ImportError:
|
||||||
|
for candidate in candidates:
|
||||||
|
try:
|
||||||
|
await client.set_message_reaction(
|
||||||
|
chat_id=chat_id,
|
||||||
|
message_id=int(message_id),
|
||||||
|
reaction=candidate,
|
||||||
|
)
|
||||||
|
return True
|
||||||
|
except Exception:
|
||||||
|
continue
|
||||||
|
|
||||||
|
logger.debug(
|
||||||
|
f"[Telegram] set_reaction 未匹配到可用表情: emoji={emoji}, candidates={candidates}"
|
||||||
|
)
|
||||||
return False
|
return False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug(f"[Telegram] set_reaction 失败: {e}")
|
logger.debug(f"[Telegram] set_reaction 失败: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user