Skip to content

事件处理

基本用法

PyWeWork 使用装饰器注册事件处理函数:

python
from pywework import WeWork, events

wework = WeWork("5.0.3.6005")

@wework.handle(events.TEXT_MESSAGE)
def on_text_message(bot: WeWork, event: dict):
    print(f"收到消息: {event['data']['content']}")

wework.run()

事件处理函数签名

所有事件处理函数接收两个参数:

python
def handler(bot: WeWork, event: dict):
    pass
  • bot - WeWork 实例,可用于调用各种 API
  • event - 事件数据字典,包含事件详情

事件数据结构

python
{
    "type": 11041,           # 事件类型
    "client_id": 12345,      # 客户端 ID
    "data": {
        "content": "Hello",  # 具体数据(因事件类型而异)
        ...
    }
}

监听所有消息

使用 events.ALL_MESSAGE 可以监听所有类型的消息:

python
@wework.handle(events.ALL_MESSAGE)
def on_any_message(bot: WeWork, event: dict):
    print(f"收到事件: type={event['type']}")

多个处理函数

可以为同一事件注册多个处理函数:

python
@wework.handle(events.TEXT_MESSAGE)
def handler1(bot: WeWork, event: dict):
    print("Handler 1")

@wework.handle(events.TEXT_MESSAGE)
def handler2(bot: WeWork, event: dict):
    print("Handler 2")

实用示例

自动回复

python
@wework.handle(events.TEXT_MESSAGE)
def auto_reply(bot: WeWork, event: dict):
    conversation_id = event["data"]["conversation_id"]
    content = event["data"]["content"]

    if content == "你好":
        bot.send_text(event["client_id"], conversation_id, "你好!有什么可以帮你的?")

好友申请自动通过

python
@wework.handle(events.FRIEND_REQUEST_MESSAGE)
def auto_accept(bot: WeWork, event: dict):
    bot.accept_friend_request(
        event["client_id"],
        event["data"]["user_id"],
        event["data"]["corp_id"]
    )

群成员变动通知

python
@wework.handle(events.GROUP_MEMBER_INCREASE_MESSAGE)
def on_member_join(bot: WeWork, event: dict):
    print(f"新成员加入群聊: {event['data']}")

@wework.handle(events.GROUP_MEMBER_DECREASE_MESSAGE)
def on_member_leave(bot: WeWork, event: dict):
    print(f"成员退出群聊: {event['data']}")

Released under the MIT License.