ada现在支持接收贴表情消息
This commit is contained in:
@@ -1,41 +0,0 @@
|
|||||||
# 权限配置文件
|
|
||||||
# 此文件用于管理群聊和私聊的黑白名单设置,以及聊天相关功能
|
|
||||||
# 支持热重载,修改后会自动生效
|
|
||||||
|
|
||||||
# 群聊权限设置
|
|
||||||
group_list_type = "whitelist" # 群聊列表类型:whitelist(白名单)或 blacklist(黑名单)
|
|
||||||
group_list = [858792655,169850076,935615220] # 群聊ID列表
|
|
||||||
# 当 group_list_type 为 whitelist 时,只有列表中的群聊可以使用机器人
|
|
||||||
# 当 group_list_type 为 blacklist 时,列表中的群聊无法使用机器人
|
|
||||||
# 示例:group_list = [123456789, 987654321]
|
|
||||||
|
|
||||||
# 私聊权限设置
|
|
||||||
private_list_type = "blacklist" # 私聊列表类型:whitelist(白名单)或 blacklist(黑名单)
|
|
||||||
private_list = [] # 用户ID列表
|
|
||||||
# 当 private_list_type 为 whitelist 时,只有列表中的用户可以私聊机器人
|
|
||||||
# 当 private_list_type 为 blacklist 时,列表中的用户无法私聊机器人
|
|
||||||
# 示例:private_list = [123456789, 987654321]
|
|
||||||
|
|
||||||
# 全局禁止设置
|
|
||||||
ban_user_id = [3890767341,3910007334,548371784,3951558395,3685617807,3162255986,3913467440,3895399770,3975161550,2076412496,2276474873,3925417279,3910448576,1784512237,3833325672,3421367913,3829607928,202083990] # 全局禁止用户ID列表,这些用户无法在任何地方使用机器人
|
|
||||||
ban_qq_bot = false # 是否屏蔽QQ官方机器人消息
|
|
||||||
|
|
||||||
# 聊天功能设置
|
|
||||||
enable_poke = true # 是否启用戳一戳功能
|
|
||||||
ignore_non_self_poke = false # 是否无视不是针对自己的戳一戳
|
|
||||||
poke_debounce_seconds = 3 # 戳一戳防抖时间(秒),在指定时间内第二次针对机器人的戳一戳将被忽略
|
|
||||||
|
|
||||||
# 视频处理设置
|
|
||||||
enable_video_analysis = true # 是否启用视频识别功能
|
|
||||||
max_video_size_mb = 100 # 视频文件最大大小限制(MB)
|
|
||||||
download_timeout = 60 # 视频下载超时时间(秒)
|
|
||||||
supported_formats = ["mp4", "avi", "mov", "mkv", "flv", "wmv", "webm"] # 支持的视频格式
|
|
||||||
|
|
||||||
# 消息缓冲设置
|
|
||||||
enable_message_buffer = false # 是否启用消息缓冲合并功能
|
|
||||||
message_buffer_enable_group = true # 是否启用群聊消息缓冲合并
|
|
||||||
message_buffer_enable_private = true # 是否启用私聊消息缓冲合并
|
|
||||||
message_buffer_interval = 3.0 # 消息合并间隔时间(秒),在此时间内的连续消息将被合并
|
|
||||||
message_buffer_initial_delay = 0.5 # 消息缓冲初始延迟(秒),收到第一条消息后等待此时间开始合并
|
|
||||||
message_buffer_max_components = 50 # 单个会话最大缓冲消息组件数量,超过此数量将强制合并
|
|
||||||
message_buffer_block_prefixes = ["/", "!", "!", ".", "。", "#", "%"] # 消息缓冲屏蔽前缀,以这些前缀开头的消息不会被缓冲
|
|
||||||
@@ -126,7 +126,7 @@ class PlusCommand(ABC):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
# 检查是否为群聊消息
|
# 检查是否为群聊消息
|
||||||
is_group = hasattr(self.message, "is_group_message") and self.message.is_group_message
|
is_group = hasattr(self.message.message_info, "group_info") and self.message.message_info.group_info
|
||||||
|
|
||||||
if self.chat_type_allow == ChatType.GROUP and is_group:
|
if self.chat_type_allow == ChatType.GROUP and is_group:
|
||||||
return True
|
return True
|
||||||
|
|||||||
@@ -1 +1,254 @@
|
|||||||
PLUGIN_NAME = "napcat_adapter"
|
PLUGIN_NAME = "napcat_adapter"
|
||||||
|
|
||||||
|
QQ_FACE: dict = {
|
||||||
|
"0": "[表情:惊讶]",
|
||||||
|
"1": "[表情:撇嘴]",
|
||||||
|
"2": "[表情:色]",
|
||||||
|
"3": "[表情:发呆]",
|
||||||
|
"4": "[表情:得意]",
|
||||||
|
"5": "[表情:流泪]",
|
||||||
|
"6": "[表情:害羞]",
|
||||||
|
"7": "[表情:闭嘴]",
|
||||||
|
"8": "[表情:睡]",
|
||||||
|
"9": "[表情:大哭]",
|
||||||
|
"10": "[表情:尴尬]",
|
||||||
|
"11": "[表情:发怒]",
|
||||||
|
"12": "[表情:调皮]",
|
||||||
|
"13": "[表情:呲牙]",
|
||||||
|
"14": "[表情:微笑]",
|
||||||
|
"15": "[表情:难过]",
|
||||||
|
"16": "[表情:酷]",
|
||||||
|
"18": "[表情:抓狂]",
|
||||||
|
"19": "[表情:吐]",
|
||||||
|
"20": "[表情:偷笑]",
|
||||||
|
"21": "[表情:可爱]",
|
||||||
|
"22": "[表情:白眼]",
|
||||||
|
"23": "[表情:傲慢]",
|
||||||
|
"24": "[表情:饥饿]",
|
||||||
|
"25": "[表情:困]",
|
||||||
|
"26": "[表情:惊恐]",
|
||||||
|
"27": "[表情:流汗]",
|
||||||
|
"28": "[表情:憨笑]",
|
||||||
|
"29": "[表情:悠闲]",
|
||||||
|
"30": "[表情:奋斗]",
|
||||||
|
"31": "[表情:咒骂]",
|
||||||
|
"32": "[表情:疑问]",
|
||||||
|
"33": "[表情: 嘘]",
|
||||||
|
"34": "[表情:晕]",
|
||||||
|
"35": "[表情:折磨]",
|
||||||
|
"36": "[表情:衰]",
|
||||||
|
"37": "[表情:骷髅]",
|
||||||
|
"38": "[表情:敲打]",
|
||||||
|
"39": "[表情:再见]",
|
||||||
|
"41": "[表情:发抖]",
|
||||||
|
"42": "[表情:爱情]",
|
||||||
|
"43": "[表情:跳跳]",
|
||||||
|
"46": "[表情:猪头]",
|
||||||
|
"49": "[表情:拥抱]",
|
||||||
|
"53": "[表情:蛋糕]",
|
||||||
|
"56": "[表情:刀]",
|
||||||
|
"59": "[表情:便便]",
|
||||||
|
"60": "[表情:咖啡]",
|
||||||
|
"63": "[表情:玫瑰]",
|
||||||
|
"64": "[表情:凋谢]",
|
||||||
|
"66": "[表情:爱心]",
|
||||||
|
"67": "[表情:心碎]",
|
||||||
|
"74": "[表情:太阳]",
|
||||||
|
"75": "[表情:月亮]",
|
||||||
|
"76": "[表情:赞]",
|
||||||
|
"77": "[表情:踩]",
|
||||||
|
"78": "[表情:握手]",
|
||||||
|
"79": "[表情:胜利]",
|
||||||
|
"85": "[表情:飞吻]",
|
||||||
|
"86": "[表情:怄火]",
|
||||||
|
"89": "[表情:西瓜]",
|
||||||
|
"96": "[表情:冷汗]",
|
||||||
|
"97": "[表情:擦汗]",
|
||||||
|
"98": "[表情:抠鼻]",
|
||||||
|
"99": "[表情:鼓掌]",
|
||||||
|
"100": "[表情:糗大了]",
|
||||||
|
"101": "[表情:坏笑]",
|
||||||
|
"102": "[表情:左哼哼]",
|
||||||
|
"103": "[表情:右哼哼]",
|
||||||
|
"104": "[表情:哈欠]",
|
||||||
|
"105": "[表情:鄙视]",
|
||||||
|
"106": "[表情:委屈]",
|
||||||
|
"107": "[表情:快哭了]",
|
||||||
|
"108": "[表情:阴险]",
|
||||||
|
"109": "[表情:左亲亲]",
|
||||||
|
"110": "[表情:吓]",
|
||||||
|
"111": "[表情:可怜]",
|
||||||
|
"112": "[表情:菜刀]",
|
||||||
|
"114": "[表情:篮球]",
|
||||||
|
"116": "[表情:示爱]",
|
||||||
|
"118": "[表情:抱拳]",
|
||||||
|
"119": "[表情:勾引]",
|
||||||
|
"120": "[表情:拳头]",
|
||||||
|
"121": "[表情:差劲]",
|
||||||
|
"123": "[表情:NO]",
|
||||||
|
"124": "[表情:OK]",
|
||||||
|
"125": "[表情:转圈]",
|
||||||
|
"129": "[表情:挥手]",
|
||||||
|
"137": "[表情:鞭炮]",
|
||||||
|
"144": "[表情:喝彩]",
|
||||||
|
"146": "[表情:爆筋]",
|
||||||
|
"147": "[表情:棒棒糖]",
|
||||||
|
"169": "[表情:手枪]",
|
||||||
|
"171": "[表情:茶]",
|
||||||
|
"172": "[表情:眨眼睛]",
|
||||||
|
"173": "[表情:泪奔]",
|
||||||
|
"174": "[表情:无奈]",
|
||||||
|
"175": "[表情:卖萌]",
|
||||||
|
"176": "[表情:小纠结]",
|
||||||
|
"177": "[表情:喷血]",
|
||||||
|
"178": "[表情:斜眼笑]",
|
||||||
|
"179": "[表情:doge]",
|
||||||
|
"181": "[表情:戳一戳]",
|
||||||
|
"182": "[表情:笑哭]",
|
||||||
|
"183": "[表情:我最美]",
|
||||||
|
"185": "[表情:羊驼]",
|
||||||
|
"187": "[表情:幽灵]",
|
||||||
|
"201": "[表情:点赞]",
|
||||||
|
"212": "[表情:托腮]",
|
||||||
|
"262": "[表情:脑阔疼]",
|
||||||
|
"263": "[表情:沧桑]",
|
||||||
|
"264": "[表情:捂脸]",
|
||||||
|
"265": "[表情:辣眼睛]",
|
||||||
|
"266": "[表情:哦哟]",
|
||||||
|
"267": "[表情:头秃]",
|
||||||
|
"268": "[表情:问号脸]",
|
||||||
|
"269": "[表情:暗中观察]",
|
||||||
|
"270": "[表情:emm]",
|
||||||
|
"271": "[表情:吃 瓜]",
|
||||||
|
"272": "[表情:呵呵哒]",
|
||||||
|
"273": "[表情:我酸了]",
|
||||||
|
"277": "[表情:汪汪]",
|
||||||
|
"281": "[表情:无眼笑]",
|
||||||
|
"282": "[表情:敬礼]",
|
||||||
|
"283": "[表情:狂笑]",
|
||||||
|
"284": "[表情:面无表情]",
|
||||||
|
"285": "[表情:摸鱼]",
|
||||||
|
"286": "[表情:魔鬼笑]",
|
||||||
|
"287": "[表情:哦]",
|
||||||
|
"289": "[表情:睁眼]",
|
||||||
|
"293": "[表情:摸锦鲤]",
|
||||||
|
"294": "[表情:期待]",
|
||||||
|
"295": "[表情:拿到红包]",
|
||||||
|
"297": "[表情:拜谢]",
|
||||||
|
"298": "[表情:元宝]",
|
||||||
|
"299": "[表情:牛啊]",
|
||||||
|
"300": "[表情:胖三斤]",
|
||||||
|
"302": "[表情:左拜年]",
|
||||||
|
"303": "[表情:右拜年]",
|
||||||
|
"305": "[表情:右亲亲]",
|
||||||
|
"306": "[表情:牛气冲天]",
|
||||||
|
"307": "[表情:喵喵]",
|
||||||
|
"311": "[表情:打call]",
|
||||||
|
"312": "[表情:变形]",
|
||||||
|
"314": "[表情:仔细分析]",
|
||||||
|
"317": "[表情:菜汪]",
|
||||||
|
"318": "[表情:崇拜]",
|
||||||
|
"319": "[表情: 比心]",
|
||||||
|
"320": "[表情:庆祝]",
|
||||||
|
"323": "[表情:嫌弃]",
|
||||||
|
"324": "[表情:吃糖]",
|
||||||
|
"325": "[表情:惊吓]",
|
||||||
|
"326": "[表情:生气]",
|
||||||
|
"332": "[表情:举牌牌]",
|
||||||
|
"333": "[表情:烟花]",
|
||||||
|
"334": "[表情:虎虎生威]",
|
||||||
|
"336": "[表情:豹富]",
|
||||||
|
"337": "[表情:花朵脸]",
|
||||||
|
"338": "[表情:我想开了]",
|
||||||
|
"339": "[表情:舔屏]",
|
||||||
|
"341": "[表情:打招呼]",
|
||||||
|
"342": "[表情:酸Q]",
|
||||||
|
"343": "[表情:我方了]",
|
||||||
|
"344": "[表情:大怨种]",
|
||||||
|
"345": "[表情:红包多多]",
|
||||||
|
"346": "[表情:你真棒棒]",
|
||||||
|
"347": "[表情:大展宏兔]",
|
||||||
|
"349": "[表情:坚强]",
|
||||||
|
"350": "[表情:贴贴]",
|
||||||
|
"351": "[表情:敲敲]",
|
||||||
|
"352": "[表情:咦]",
|
||||||
|
"353": "[表情:拜托]",
|
||||||
|
"354": "[表情:尊嘟假嘟]",
|
||||||
|
"355": "[表情:耶]",
|
||||||
|
"356": "[表情:666]",
|
||||||
|
"357": "[表情:裂开]",
|
||||||
|
"392": "[表情:龙年 快乐]",
|
||||||
|
"393": "[表情:新年中龙]",
|
||||||
|
"394": "[表情:新年大龙]",
|
||||||
|
"395": "[表情:略略略]",
|
||||||
|
"396": "[表情:龙年快乐]",
|
||||||
|
"424": "[表情:按钮]",
|
||||||
|
"😊": "[表情:嘿嘿]",
|
||||||
|
"😌": "[表情:羞涩]",
|
||||||
|
"😚": "[ 表情:亲亲]",
|
||||||
|
"😓": "[表情:汗]",
|
||||||
|
"😰": "[表情:紧张]",
|
||||||
|
"😝": "[表情:吐舌]",
|
||||||
|
"😁": "[表情:呲牙]",
|
||||||
|
"😜": "[表情:淘气]",
|
||||||
|
"☺": "[表情:可爱]",
|
||||||
|
"😍": "[表情:花痴]",
|
||||||
|
"😔": "[表情:失落]",
|
||||||
|
"😄": "[表情:高兴]",
|
||||||
|
"😏": "[表情:哼哼]",
|
||||||
|
"😒": "[表情:不屑]",
|
||||||
|
"😳": "[表情:瞪眼]",
|
||||||
|
"😘": "[表情:飞吻]",
|
||||||
|
"😭": "[表情:大哭]",
|
||||||
|
"😱": "[表情:害怕]",
|
||||||
|
"😂": "[表情:激动]",
|
||||||
|
"💪": "[表情:肌肉]",
|
||||||
|
"👊": "[表情:拳头]",
|
||||||
|
"👍": "[表情 :厉害]",
|
||||||
|
"👏": "[表情:鼓掌]",
|
||||||
|
"👎": "[表情:鄙视]",
|
||||||
|
"🙏": "[表情:合十]",
|
||||||
|
"👌": "[表情:好的]",
|
||||||
|
"👆": "[表情:向上]",
|
||||||
|
"👀": "[表情:眼睛]",
|
||||||
|
"🍜": "[表情:拉面]",
|
||||||
|
"🍧": "[表情:刨冰]",
|
||||||
|
"🍞": "[表情:面包]",
|
||||||
|
"🍺": "[表情:啤酒]",
|
||||||
|
"🍻": "[表情:干杯]",
|
||||||
|
"☕": "[表情:咖啡]",
|
||||||
|
"🍎": "[表情:苹果]",
|
||||||
|
"🍓": "[表情:草莓]",
|
||||||
|
"🍉": "[表情:西瓜]",
|
||||||
|
"🚬": "[表情:吸烟]",
|
||||||
|
"🌹": "[表情:玫瑰]",
|
||||||
|
"🎉": "[表情:庆祝]",
|
||||||
|
"💝": "[表情:礼物]",
|
||||||
|
"💣": "[表情:炸弹]",
|
||||||
|
"✨": "[表情:闪光]",
|
||||||
|
"💨": "[表情:吹气]",
|
||||||
|
"💦": "[表情:水]",
|
||||||
|
"🔥": "[表情:火]",
|
||||||
|
"💤": "[表情:睡觉]",
|
||||||
|
"💩": "[表情:便便]",
|
||||||
|
"💉": "[表情:打针]",
|
||||||
|
"📫": "[表情:邮箱]",
|
||||||
|
"🐎": "[表情:骑马]",
|
||||||
|
"👧": "[表情:女孩]",
|
||||||
|
"👦": "[表情:男孩]",
|
||||||
|
"🐵": "[表情:猴]",
|
||||||
|
"🐷": "[表情:猪]",
|
||||||
|
"🐮": "[表情:牛]",
|
||||||
|
"🐔": "[表情:公鸡]",
|
||||||
|
"🐸": "[表情:青蛙]",
|
||||||
|
"👻": "[表情:幽灵]",
|
||||||
|
"🐛": "[表情:虫]",
|
||||||
|
"🐶": "[表情:狗]",
|
||||||
|
"🐳": "[表情:鲸鱼]",
|
||||||
|
"👢": "[表情:靴子]",
|
||||||
|
"☀": "[表情:晴天]",
|
||||||
|
"❔": "[表情:问号]",
|
||||||
|
"🔫": "[表情:手枪]",
|
||||||
|
"💓": "[表情:爱 心]",
|
||||||
|
"🏪": "[表情:便利店]",
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import orjson
|
||||||
|
|
||||||
from src.plugin_system import BaseEventHandler
|
from src.plugin_system import BaseEventHandler
|
||||||
from src.plugin_system.base.base_event import HandlerResult
|
from src.plugin_system.base.base_event import HandlerResult
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ class NapcatEvent:
|
|||||||
"""接收到魔法猜拳消息"""
|
"""接收到魔法猜拳消息"""
|
||||||
FRIEND_INPUT = "napcat_on_friend_input"
|
FRIEND_INPUT = "napcat_on_friend_input"
|
||||||
"""好友正在输入"""
|
"""好友正在输入"""
|
||||||
|
EMOJI_LIEK = "napcat_on_received_emoji_like"
|
||||||
|
"""接收到群聊表情回复"""
|
||||||
|
|
||||||
class ACCOUNT(Enum):
|
class ACCOUNT(Enum):
|
||||||
"""
|
"""
|
||||||
@@ -682,7 +684,7 @@ class NapcatEvent:
|
|||||||
GET_MSG = "napcat_get_msg"
|
GET_MSG = "napcat_get_msg"
|
||||||
"""获取消息详情
|
"""获取消息详情
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
message_id (Optional[str|int]): 消息id(必需)
|
message_id (Optional[str|int]): 消息id(必需)
|
||||||
raw (Optional[dict]): 原始请求体
|
raw (Optional[dict]): 原始请求体
|
||||||
|
|
||||||
|
|||||||
@@ -297,8 +297,8 @@ class NapcatAdapterPlugin(BasePlugin):
|
|||||||
config_schema: dict = {
|
config_schema: dict = {
|
||||||
"plugin": {
|
"plugin": {
|
||||||
"name": ConfigField(type=str, default="napcat_adapter_plugin", description="插件名称"),
|
"name": ConfigField(type=str, default="napcat_adapter_plugin", description="插件名称"),
|
||||||
"version": ConfigField(type=str, default="1.0.0", description="插件版本"),
|
"version": ConfigField(type=str, default="1.1.0", description="插件版本"),
|
||||||
"config_version": ConfigField(type=str, default="1.3.0", description="配置文件版本"),
|
"config_version": ConfigField(type=str, default="1.3.1", description="配置文件版本"),
|
||||||
"enabled": ConfigField(type=bool, default=False, description="是否启用插件"),
|
"enabled": ConfigField(type=bool, default=False, description="是否启用插件"),
|
||||||
},
|
},
|
||||||
"inner": {
|
"inner": {
|
||||||
@@ -345,6 +345,7 @@ class NapcatAdapterPlugin(BasePlugin):
|
|||||||
"poke_debounce_seconds": ConfigField(type=int, default=3, description="戳一戳防抖时间(秒),在指定时间内第二次针对机器人的戳一戳将被忽略"),
|
"poke_debounce_seconds": ConfigField(type=int, default=3, description="戳一戳防抖时间(秒),在指定时间内第二次针对机器人的戳一戳将被忽略"),
|
||||||
"enable_reply_at": ConfigField(type=bool, default=True, description="是否启用引用回复时艾特用户的功能"),
|
"enable_reply_at": ConfigField(type=bool, default=True, description="是否启用引用回复时艾特用户的功能"),
|
||||||
"reply_at_rate": ConfigField(type=float, default=0.5, description="引用回复时艾特用户的几率 (0.0 ~ 1.0)"),
|
"reply_at_rate": ConfigField(type=float, default=0.5, description="引用回复时艾特用户的几率 (0.0 ~ 1.0)"),
|
||||||
|
"enable_emoji_like": ConfigField(type=bool, default=True, description="是否启用群聊表情回复功能"),
|
||||||
|
|
||||||
# 视频处理设置
|
# 视频处理设置
|
||||||
"enable_video_analysis": ConfigField(type=bool, default=True, description="是否启用视频识别功能"),
|
"enable_video_analysis": ConfigField(type=bool, default=True, description="是否启用视频识别功能"),
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ class NoticeType: # 通知事件
|
|||||||
group_recall = "group_recall" # 群聊消息撤回
|
group_recall = "group_recall" # 群聊消息撤回
|
||||||
notify = "notify"
|
notify = "notify"
|
||||||
group_ban = "group_ban" # 群禁言
|
group_ban = "group_ban" # 群禁言
|
||||||
|
group_msg_emoji_like = "group_msg_emoji_like" # 群聊表情回复
|
||||||
|
|
||||||
class Notify:
|
class Notify:
|
||||||
poke = "poke" # 戳一戳
|
poke = "poke" # 戳一戳
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ from ..utils import (
|
|||||||
read_ban_list,
|
read_ban_list,
|
||||||
)
|
)
|
||||||
|
|
||||||
from ...CONSTS import PLUGIN_NAME
|
from ...CONSTS import PLUGIN_NAME, QQ_FACE
|
||||||
|
|
||||||
notice_queue: asyncio.Queue[MessageBase] = asyncio.Queue(maxsize=100)
|
notice_queue: asyncio.Queue[MessageBase] = asyncio.Queue(maxsize=100)
|
||||||
unsuccessful_notice_queue: asyncio.Queue[MessageBase] = asyncio.Queue(maxsize=3)
|
unsuccessful_notice_queue: asyncio.Queue[MessageBase] = asyncio.Queue(maxsize=3)
|
||||||
@@ -130,6 +130,13 @@ class NoticeHandler:
|
|||||||
await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.FRIEND_INPUT, permission_group=PLUGIN_NAME)
|
await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.FRIEND_INPUT, permission_group=PLUGIN_NAME)
|
||||||
case _:
|
case _:
|
||||||
logger.warning(f"不支持的notify类型: {notice_type}.{sub_type}")
|
logger.warning(f"不支持的notify类型: {notice_type}.{sub_type}")
|
||||||
|
case NoticeType.group_msg_emoji_like:
|
||||||
|
# 该事件转移到 handle_group_emoji_like_notify函数内触发
|
||||||
|
if config_api.get_plugin_config(self.plugin_config, "features.enable_emoji_like", True):
|
||||||
|
logger.debug("处理群聊表情回复")
|
||||||
|
handled_message, user_info = await self.handle_group_emoji_like_notify(raw_message,group_id,user_id)
|
||||||
|
else:
|
||||||
|
logger.warning("群聊表情回复被禁用,取消群聊表情回复处理")
|
||||||
case NoticeType.group_ban:
|
case NoticeType.group_ban:
|
||||||
sub_type = raw_message.get("sub_type")
|
sub_type = raw_message.get("sub_type")
|
||||||
match sub_type:
|
match sub_type:
|
||||||
@@ -284,6 +291,50 @@ class NoticeHandler:
|
|||||||
)
|
)
|
||||||
return seg_data, user_info
|
return seg_data, user_info
|
||||||
|
|
||||||
|
async def handle_group_emoji_like_notify(self, raw_message: dict, group_id: int, user_id: int):
|
||||||
|
if not group_id:
|
||||||
|
logger.error("群ID不能为空,无法处理群聊表情回复通知")
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
user_qq_info: dict = await get_member_info(self.get_server_connection(), group_id, user_id)
|
||||||
|
if user_qq_info:
|
||||||
|
user_name = user_qq_info.get("nickname")
|
||||||
|
user_cardname = user_qq_info.get("card")
|
||||||
|
else:
|
||||||
|
user_name = "QQ用户"
|
||||||
|
user_cardname = "QQ用户"
|
||||||
|
logger.debug("无法获取表情回复对方的用户昵称")
|
||||||
|
|
||||||
|
from src.plugin_system.core.event_manager import event_manager
|
||||||
|
from ...event_types import NapcatEvent
|
||||||
|
|
||||||
|
target_message = await event_manager.trigger_event(NapcatEvent.MESSAGE.GET_MSG,message_id=raw_message.get("message_id",""))
|
||||||
|
target_message_text = target_message.get_message_result().get("data",{}).get("raw_message","")
|
||||||
|
if not target_message:
|
||||||
|
logger.error("未找到对应消息")
|
||||||
|
return None, None
|
||||||
|
if len(target_message_text) > 15:
|
||||||
|
target_message_text = target_message_text[:15] + "..."
|
||||||
|
|
||||||
|
user_info: UserInfo = UserInfo(
|
||||||
|
platform=config_api.get_plugin_config(self.plugin_config, "maibot_server.platform_name", "qq"),
|
||||||
|
user_id=user_id,
|
||||||
|
user_nickname=user_name,
|
||||||
|
user_cardname=user_cardname,
|
||||||
|
)
|
||||||
|
|
||||||
|
like_emoji_id = raw_message.get("likes")[0].get("emoji_id")
|
||||||
|
await event_manager.trigger_event(
|
||||||
|
NapcatEvent.ON_RECEIVED.EMOJI_LIEK,
|
||||||
|
permission_group=PLUGIN_NAME,
|
||||||
|
group_id=group_id,
|
||||||
|
user_id=user_id,
|
||||||
|
message_id=raw_message.get("message_id",""),
|
||||||
|
emoji_id=like_emoji_id
|
||||||
|
)
|
||||||
|
seg_data = Seg(type="text",data=f"{user_name}使用Emoji表情{QQ_FACE.get(like_emoji_id,"")}回复了你的消息[{target_message_text}]")
|
||||||
|
return seg_data, user_info
|
||||||
|
|
||||||
async def handle_ban_notify(self, raw_message: dict, group_id: int) -> Tuple[Seg, UserInfo] | Tuple[None, None]:
|
async def handle_ban_notify(self, raw_message: dict, group_id: int) -> Tuple[Seg, UserInfo] | Tuple[None, None]:
|
||||||
if not group_id:
|
if not group_id:
|
||||||
logger.error("群ID不能为空,无法处理禁言通知")
|
logger.error("群ID不能为空,无法处理禁言通知")
|
||||||
|
|||||||
Reference in New Issue
Block a user