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