Python基于Wechaty构建一个简单的微信机器人

Written by

in

文章目录
  • Wechaty 是一个专为微信生态设计的聊天机器人框架,它支持私有部署、云端服务,并提供多种 Puppet 插件接入微信协议,如: wechaty-puppet-wechat4u(个人微信网页版) wechaty-puppet-padplus(已停用) wechaty-puppet-service(推荐,官方提供 token 服务接入) wechaty-puppet-wecom(企业微信)
  • 以 wechaty-puppet-service 为例 访问 https://wechaty.js.org/docs/puppet-services/ 并注册一个账号,获取免费的 puppet_service_token。这是连接微信服务的关键凭据。
  • from wechaty import Wechaty, Message, Contact class MyBot(Wechaty): async def on_message(self, msg: Message): text = msg.text() talker = msg.talker() print(f’Message from {talker.name}: {text}’) if text.lower() == ‘ping’: await msg.say(‘pong’) if __name__ == ‘__main__’: import asyncio asyncio.run(MyBot().start()) 上述代码会监听微信消息,如果有人发“ping”,机器人会回复“pong”。
  • 你可以通过环境变量指定你的 puppet_service_token: export WECHATY_PUPPET=wechaty-puppet-service export WECHATY_PUPPET_SERVICE_TOKEN=your_token_here python bot.py 或者直接在代码中指定: bot = MyBot() bot.options.puppet = ‘wechaty-puppet-service’ bot.options.puppet_token = ‘your_token_here’ asyncio.run(bot.start())
  • 如果你不想本地安装所有依赖,可以用 Docker 来运行 Wechaty: docker run -e WECHATY_PUPPET=wechaty-puppet-service -e WECHATY_PUPPET_SERVICE_TOKEN=your_token wechaty/wechaty
  • 1.无法连接服务端 错误:WechatyPuppetGrpcError: service server is invalid 原因:puppet_token 不正确或网络不通 2.消息接收不到 请检查是否扫码登录成功,或是否被微信屏蔽 3.Docker 拉取失败 使用国内代理,如 dockerproxy.com 或配置镜像加速器
  • python wechaty实现微信机器人,完成定时群发功能 步骤:(必须要python3.7以上版本,我用的python3.7) 1.安装wechaty pip install wechaty 2.导入申请的token export WECHATY_PUPPET_HOSTIE_TOKEN='your-token' 3.编写代码 最基础功能:发送ding会返回给你一张图片 import asyncio from wechaty import Wechaty, Message class MyBot(Wechaty): async def on_message(self, msg: Message): talker = msg.talker() await talker.ready() if msg.text() == “ding”: await talker.say(‘dong’) elif msg.text() == ‘image’: file_box = FileBox.from_url( ‘https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/’ ‘u=1116676390,2305043183&fm=26&gp=0.jpg’, name=’ding-dong.jpg’) await talker.say(file_box) async def main(): bot = MyBot() await bot.start() asyncio.run(main()) 完成定时群发功能 #encoding = utf-8 from wechaty import Wechaty from wechaty.plugin import WechatyPlugin from apscheduler.schedulers.asyncio import AsyncIOScheduler import asyncio import datetime #from wechaty import get_room_id class DailyPlugin(WechatyPlugin): @property def name(self) -> str: return ‘dayily’ async def tick(self): rooms = await self.bot.Room.find_all() for currRoom in rooms: print(f’room pay load topic: {currRoom.payload.topic}, topic: {currRoom.topic}, currRoom.room_id: {currRoom.room_id}’) topic = currRoom.payload.topic if(topic.startswith(“ding”) or topic.startswith(“曼玲-食神券坊外卖”)): room = currRoom await room.say(f’您好,我是食神券坊智能机器人,今天正式上线! -> {datetime.datetime.now()}’) async def init_plugin(self, wechaty: Wechaty): await super().init_plugin(wechaty) scheduler = AsyncIOScheduler() scheduler.add_job(self.tick, ‘cron’, hour=9, minute=43, second=55) scheduler.start() async def main(): bot = Wechaty().use(DailyPlugin()) await bot.start() asyncio.run(main()) 小结 通过 Wechaty Python SDK,我们可以快速构建一个可响应消息的微信机器人。借助 puppet-service 的云服务,我们无需逆向协议,即可专注于业务逻辑开发。 到此这篇关于Python基于Wechaty构建一个简单的微信机器人的文章就介绍到这了,更多相关Python Wechaty构建微信机器人内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python结合wxauto实现智能微信聊天机器人 基于Python制作一个微信聊天机器人 Python实现企业微信通知机器人的方法详解 Python制作微信机器人教程详解 Python实现微信机器人的方法 python实现微信自动回复机器人功能
  • 目录
    • 一、什么是 Wechaty
    • 二、环境准备
      • 1. 安装 Python 环境
      • 2. 安装 Wechaty Python SDK
    • 三、获取 puppet token
      • 四、编写机器人代码
        • 五、配置 Puppet token 运行
          • 六、使用 Docker 本地运行(可选)
            • 七、常见问题与排查
              • 八、方法补充

                在当今自动化和智能化需求日益增长的时代,企业微信、公众号、小助手等自动聊天工具层出不穷。Wechaty 是一个跨平台的聊天机器人 SDK,支持多语言开发,包括 JavaScript、Python、Go、Rust 等,帮助开发者快速构建微信机器人。

                本文将介绍如何基于 Python 语言使用 Wechaty,构建一个简单的微信机器人。

                Wechaty 是一个专为微信生态设计的聊天机器人框架,它支持私有部署、云端服务,并提供多种 Puppet 插件接入微信协议,如:

                • wechaty-puppet-wechat4u(个人微信网页版)
                • wechaty-puppet-padplus(已停用)
                • wechaty-puppet-service(推荐,官方提供 token 服务接入)
                • wechaty-puppet-wecom(企业微信)

                确保本地已安装 Python3.7+,推荐使用 Python3.9 版本:

                python3 --version
                pip3 --version
                

                建议创建虚拟环境:

                python3 -m venv .venv
                source .venv/bin/activate
                

                pip install wechaty
                

                以 wechaty-puppet-service 为例

                访问 https://wechaty.js.org/docs/puppet-services/ 并注册一个账号,获取免费的 puppet_service_token。这是连接微信服务的关键凭据。

                from wechaty import Wechaty, Message, Contact
                
                class MyBot(Wechaty):
                
                    async def on_message(self, msg: Message):
                        text = msg.text()
                        talker = msg.talker()
                
                        print(f'Message from {talker.name}: {text}')
                
                        if text.lower() == 'ping':
                            await msg.say('pong')
                
                if __name__ == '__main__':
                    import asyncio
                    asyncio.run(MyBot().start())
                

                上述代码会监听微信消息,如果有人发“ping”,机器人会回复“pong”。

                你可以通过环境变量指定你的 puppet_service_token:

                export WECHATY_PUPPET=wechaty-puppet-service
                export WECHATY_PUPPET_SERVICE_TOKEN=your_token_here
                python bot.py
                

                或者直接在代码中指定:

                bot = MyBot()
                bot.options.puppet = 'wechaty-puppet-service'
                bot.options.puppet_token = 'your_token_here'
                asyncio.run(bot.start())
                

                如果你不想本地安装所有依赖,可以用 Docker 来运行 Wechaty:

                docker run -e WECHATY_PUPPET=wechaty-puppet-service 
                           -e WECHATY_PUPPET_SERVICE_TOKEN=your_token 
                           wechaty/wechaty
                

                1.无法连接服务端

                错误:WechatyPuppetGrpcError: service server is invalid

                原因:puppet_token 不正确或网络不通

                2.消息接收不到

                请检查是否扫码登录成功,或是否被微信屏蔽

                3.Docker 拉取失败

                使用国内代理,如 dockerproxy.com 或配置镜像加速器

                python wechaty实现微信机器人,完成定时群发功能

                步骤:(必须要python3.7以上版本,我用的python3.7)

                1.安装wechaty

                pip install wechaty

                2.导入申请的token

                export WECHATY_PUPPET_HOSTIE_TOKEN='your-token'

                3.编写代码

                最基础功能:发送ding会返回给你一张图片

                import asyncio
                from wechaty import Wechaty, Message
                
                class MyBot(Wechaty):
                    async def on_message(self, msg: Message):
                        talker = msg.talker()
                        await talker.ready()
                        if msg.text() == "ding":
                            await talker.say('dong')
                        elif msg.text() == 'image':
                            file_box = FileBox.from_url(
                                'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/'
                                'u=1116676390,2305043183&fm=26&gp=0.jpg',
                                name='ding-dong.jpg')
                            await talker.say(file_box)
                
                async def main():
                    bot = MyBot()
                    await bot.start()
                
                asyncio.run(main())

                完成定时群发功能

                #encoding = utf-8                                                                                                                                                                                            
                from wechaty import Wechaty
                from wechaty.plugin import WechatyPlugin
                from apscheduler.schedulers.asyncio import AsyncIOScheduler
                import asyncio
                import datetime
                #from wechaty import get_room_id
                
                class DailyPlugin(WechatyPlugin):
                  @property
                  def name(self) -> str:
                    return 'dayily'
                
                  async def tick(self):
                    rooms = await self.bot.Room.find_all()
                    for currRoom in rooms:
                        print(f'room pay load topic: {currRoom.payload.topic}, topic: {currRoom.topic}, currRoom.room_id: {currRoom.room_id}')
                
                        topic =  currRoom.payload.topic
                        if(topic.startswith("ding") or topic.startswith("曼玲-食神券坊外卖")):
                            room = currRoom
                            await room.say(f'您好,我是食神券坊智能机器人,今天正式上线! -> {datetime.datetime.now()}')
                
                  async def init_plugin(self, wechaty: Wechaty):
                    await super().init_plugin(wechaty)
                    scheduler = AsyncIOScheduler()
                    scheduler.add_job(self.tick, 'cron', hour=9, minute=43, second=55)
                    scheduler.start()
                
                async def main():
                  bot = Wechaty().use(DailyPlugin())
                  await bot.start()
                
                asyncio.run(main())
                

                小结

                通过 Wechaty Python SDK,我们可以快速构建一个可响应消息的微信机器人。借助 puppet-service 的云服务,我们无需逆向协议,即可专注于业务逻辑开发。

                到此这篇关于Python基于Wechaty构建一个简单的微信机器人的文章就介绍到这了,更多相关Python Wechaty构建微信机器人内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

                您可能感兴趣的文章:

                • Python结合wxauto实现智能微信聊天机器人
                • 基于Python制作一个微信聊天机器人
                • Python实现企业微信通知机器人的方法详解
                • Python制作微信机器人教程详解
                • Python实现微信机器人的方法
                • python实现微信自动回复机器人功能

                站内搜索