Browse Source

feat: support receive_message event

master
lanvent 1 year ago
parent
commit
9cef559a05
2 changed files with 11 additions and 4 deletions
  1. +7
    -3
      channel/chat_channel.py
  2. +4
    -1
      plugins/event.py

+ 7
- 3
channel/chat_channel.py View File

@@ -48,9 +48,6 @@ class ChatChannel(Channel):
if first_in: # context首次传入时,receiver是None,根据类型设置receiver if first_in: # context首次传入时,receiver是None,根据类型设置receiver
config = conf() config = conf()
cmsg = context['msg'] cmsg = context['msg']
if cmsg.from_user_id == self.user_id and not config.get('trigger_by_self', True):
logger.debug("[WX]self message skipped")
return None
if context.get("isgroup", False): if context.get("isgroup", False):
group_name = cmsg.other_user_nickname group_name = cmsg.other_user_nickname
group_id = cmsg.other_user_id group_id = cmsg.other_user_id
@@ -69,6 +66,13 @@ class ChatChannel(Channel):
else: else:
context['session_id'] = cmsg.other_user_id context['session_id'] = cmsg.other_user_id
context['receiver'] = cmsg.other_user_id context['receiver'] = cmsg.other_user_id
e_context = PluginManager().emit_event(EventContext(Event.ON_RECEIVE_MESSAGE, {'channel': self, 'context': context}))
context = e_context['context']
if e_context.is_pass() or context is None:
return context
if cmsg.from_user_id == self.user_id and not config.get('trigger_by_self', True):
logger.debug("[WX]self message skipped")
return None


# 消息内容匹配过程,并处理content # 消息内容匹配过程,并处理content
if ctype == ContextType.TEXT: if ctype == ContextType.TEXT:


+ 4
- 1
plugins/event.py View File

@@ -4,7 +4,10 @@ from enum import Enum




class Event(Enum): class Event(Enum):
# ON_RECEIVE_MESSAGE = 1 # 收到消息
ON_RECEIVE_MESSAGE = 1 # 收到消息
"""
e_context = { "channel": 消息channel, "context" : 本次消息的context}
"""


ON_HANDLE_CONTEXT = 2 # 处理消息前 ON_HANDLE_CONTEXT = 2 # 处理消息前
""" """


Loading…
Cancel
Save