mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-03-04 07:43:46 +08:00
feat: itchat support picture msg
This commit is contained in:
@@ -5,7 +5,8 @@ from enum import Enum
|
||||
class ContextType (Enum):
|
||||
TEXT = 1 # 文本消息
|
||||
VOICE = 2 # 音频消息
|
||||
IMAGE_CREATE = 3 # 创建图片命令
|
||||
IMAGE = 3 # 图片消息
|
||||
IMAGE_CREATE = 10 # 创建图片命令
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
@@ -170,6 +170,8 @@ class ChatChannel(Channel):
|
||||
reply = self._generate_reply(new_context)
|
||||
else:
|
||||
return
|
||||
elif context.type == ContextType.IMAGE: # 图片消息,当前无默认逻辑
|
||||
pass
|
||||
else:
|
||||
logger.error('[WX] unknown context type: {}'.format(context.type))
|
||||
return
|
||||
|
||||
@@ -23,13 +23,18 @@ from common.time_check import time_checker
|
||||
from common.expired_dict import ExpiredDict
|
||||
from plugins import *
|
||||
|
||||
@itchat.msg_register([TEXT,VOICE])
|
||||
@itchat.msg_register([TEXT,VOICE,PICTURE])
|
||||
def handler_single_msg(msg):
|
||||
# logger.debug("handler_single_msg: {}".format(msg))
|
||||
if msg['Type'] == PICTURE and msg['MsgType'] == 47:
|
||||
return None
|
||||
WechatChannel().handle_single(WeChatMessage(msg))
|
||||
return None
|
||||
|
||||
@itchat.msg_register([TEXT,VOICE], isGroupChat=True)
|
||||
@itchat.msg_register([TEXT,VOICE,PICTURE], isGroupChat=True)
|
||||
def handler_group_msg(msg):
|
||||
if msg['Type'] == PICTURE and msg['MsgType'] == 47:
|
||||
return None
|
||||
WechatChannel().handle_group(WeChatMessage(msg,True))
|
||||
return None
|
||||
|
||||
@@ -127,6 +132,8 @@ class WechatChannel(ChatChannel):
|
||||
if conf().get('speech_recognition') != True:
|
||||
return
|
||||
logger.debug("[WX]receive voice msg: {}".format(cmsg.content))
|
||||
elif cmsg.ctype == ContextType.IMAGE:
|
||||
logger.debug("[WX]receive image msg: {}".format(cmsg.content))
|
||||
else:
|
||||
logger.debug("[WX]receive text msg: {}, cmsg={}".format(json.dumps(cmsg._rawmsg, ensure_ascii=False), cmsg))
|
||||
context = self._compose_context(cmsg.ctype, cmsg.content, isgroup=False, msg=cmsg)
|
||||
|
||||
@@ -22,6 +22,10 @@ class WeChatMessage(ChatMessage):
|
||||
self.ctype = ContextType.VOICE
|
||||
self.content = TmpDir().path() + itchat_msg['FileName'] # content直接存临时目录路径
|
||||
self._prepare_fn = lambda: itchat_msg.download(self.content)
|
||||
elif itchat_msg['Type'] == PICTURE and itchat_msg['MsgType'] == 3:
|
||||
self.ctype = ContextType.IMAGE
|
||||
self.content = TmpDir().path() + itchat_msg['FileName'] # content直接存临时目录路径
|
||||
self._prepare_fn = lambda: itchat_msg.download(self.content)
|
||||
else:
|
||||
raise NotImplementedError("Unsupported message type: {}".format(itchat_msg['Type']))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user