ソースを参照

feat: itchat support picture msg

master
lanvent 1年前
コミット
8779eab36b
4個のファイルの変更17行の追加3行の削除
  1. +2
    -1
      bridge/context.py
  2. +2
    -0
      channel/chat_channel.py
  3. +9
    -2
      channel/wechat/wechat_channel.py
  4. +4
    -0
      channel/wechat/wechat_message.py

+ 2
- 1
bridge/context.py ファイルの表示

@@ -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


+ 2
- 0
channel/chat_channel.py ファイルの表示

@@ -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


+ 9
- 2
channel/wechat/wechat_channel.py ファイルの表示

@@ -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)


+ 4
- 0
channel/wechat/wechat_message.py ファイルの表示

@@ -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']))


読み込み中…
キャンセル
保存