Skip to content

介绍

python-wechaty的接口非常人性化和轻量级,通过不同模块不同接口来完成定制化的功能。在这个章节中将会为你详细介绍不同模块下的接口细节。

模块

python-wechaty中所有模块都可直接从top-level来导入,例如:

from wechaty import Wechaty, Message

Wechaty 类

from wechaty import Wechaty

当开发者想要编写聊天机器人时,可通过面向函数式编程和面向对象编程两种模式:

  • 面向函数编程
import os, asyncio

from wechaty import Message, Wechaty

async def on_message(msg: Message):
    if msg.text() == 'ding':
        await msg.say('dong')

async def main():
    bot = Wechaty()
    bot.on('message',   on_message)

    await bot.start()
    print('[Python Wechaty] Ding Dong Bot started.')

asyncio.run(main())
  • 面向对象编程
import asyncio

from wechaty import (
    Wechaty, Contact, Message
)

class MyBot(Wechaty):
    async def on_message(self, msg: Message):
        if msg.text() == 'ding':
            await msg.say('dong')

asyncio.run(MyBot().start())

以上两种方式中,各有优劣,可是我推荐使用面向对象编程,这个在封装性和代码提示的角度上都对开发者比较友好。

用户相关模块

当开发者想要搜索联系人,主动给某个联系人发送消息时,此时需要主动加载联系人对象,然后发送消息。模块类型有:

推荐:所有系统初始化相关的任务都需要在ready事件触发之后执行。

⚠️ 注意:在python-wechaty中加载以上模块的方式:

  • 面向函数式编程
# bot:机器人实例对象,函数内可访问的对象,推荐使用单例模式来构建
contacts: List[Contact] = bot.Contact.find_all()
  • 面向对象编程
async def on_ready(self, payload):
    # self: 机器人实例对象,而且还有良好的代码自动提示的功能
    contacts: List[Contact] = self.Contact.find_all()