wechaty撸一个属于自己的微信呆板人(Python版接入文心一言)

[复制链接]
发表于 2026-2-22 19:00:32 | 显示全部楼层 |阅读模式
前言

   分析:
  呆板人的框架找了好久,由于很多框架都不能利用了大概封号率极高,末了选择了wewechaty,wechaty是可以利用ipad协议,重要是以node写的,由于筹划呆板人接入爬虫项目,以是特意用了python版本,对于python版网上教程太少且含糊且时间过于久远,所做以此文为采坑记载。
    前期预备:
  token:
padlocal (新用户可以免费领取七天)
  百度智能云:千帆模子 (不须要接入文心一言的可以绕过)
    大概用到的网站:
  wechaty中文文档 :node版本可以查察干系语法与利用,大抵python差不多
  python-wechaty:python文档没有node版本齐备 大抵也能搭建
  快速搭建

   提示:本文默认都对Docker的根本利用有所相识的底子下举行
  总体来说分为两步:
  1.Docker启动Padlocal网关服务的容器(固定)
  2.Docker启动自己的python服务的容器毗连启动的网关服务(自己的呆板人代码)
  第一步:

新建SH文件 start.sh
  1. export WECHATY_LOG="verbose"
  2. export WECHATY_PUPPET="wechaty-puppet-padlocal"
  3. export WECHATY_PUPPET_PADLOCAL_TOKEN="puppet_padlocal_51d6b6a6a60546a7b33a5041c1e44a72"
  4. export WECHATY_PUPPET_SERVER_PORT="8004"
  5. export WECHATY_TOKEN="0c7b8f97-f3cc-40a5-a537-d492fd689801"
  6. sed -i s/token=.*/token=$WECHATY_TOKEN/g .env
  7. docker run -ti \
  8.   --name wechaty_puppet_service_token_gateway \
  9.   --rm \
  10.   -e WECHATY_LOG \
  11.   -e WECHATY_PUPPET \
  12.   -e WECHATY_PUPPET_PADLOCAL_TOKEN \
  13.   -e WECHATY_PUPPET_SERVER_PORT \
  14.   -e WECHATY_TOKEN \
  15.   -p "$WECHATY_PUPPET_SERVER_PORT:$WECHATY_PUPPET_SERVER_PORT" \
  16.   wechaty/wechaty:0.65
复制代码
  重要参数分析:
  WECHATY_PUPPET:协议标识 这里我们利用wechaty-puppet-padlocal作为ipd协议
  WECHATY_PUPPET_PADLOCAL_TOKEN:上文中提到的申请的token,必填必正常否则无法利用
  WECHATY_PUPPET_SERVER_PORT :端标语,须要服务器开放该端口,供python服务调用
  WECHATY_TOKEN:随机天生UUID,克制服务被他人偷取 可用import uuid;print(uuid.uuid4())大概在线天生uuid
  别的参数可以稳固
    运行该文件,启动Padlocal网关,启动后如提示信息为微信登录图片,可复制到欣赏器扫码登录。
  第二步:

   新增python项目,bot.py文件,以下为官方示例删减子女码,重要图一个方便明白
  1. import asyncio, os
  2. from wechaty import Wechaty
  3. class MyBot(Wechaty):
  4.     async def on_message(self, msg):
  5.         from_contact = msg.talker()
  6.         text = msg.text()
  7.         room = msg.room()
  8.         if text == 'ding':
  9.             conversation = from_contact if room is None else room
  10.             await conversation.ready()
  11.             await conversation.say('dong')
  12. os.environ['TOKEN'] = "1fe5f846-3cfb-401d-b20c-XXXXX"
  13. os.environ['WECHATY_PUPPET_SERVICE_ENDPOINT'] = "127.0.0.1:9001"
  14. bot = MyBot()
  15. #bot.on('scan', lambda status, qrcode, data: print(
  16. #    'Scan QR Code to login: {}\nhttps://wechaty.js.org/qrcode/{}'.format(status, qrcode)))
  17. #bot.on('login', lambda user: print('User {} logged in'.format(user)))
  18. #bot.on('message', lambda message: print('Message: {}'.format(message)))
复制代码
  重要说一下作用:收到消息为ding的消息,复兴dong
  msg.talker() 获取消息的发送者
  msg.text() 获取消息内容
  msg.room() 群里消息,如果消息不是来自群聊, 则返回None 特别留意:如果是群里对象msg.talker()也会有值,值为当前群里发送消息的人
  conversation.ready() 当全部数据加载完成时发出(如果是个人利用主体为talker()复兴,如是群利用主体为room())
   conversation.say() 发送消息(同上如果是个人利用主体为talker()复兴,如是群利用主体为room()),
如果是群聊发送指定人则填入第二个参数即可,第二个参数为:msg.talker().contact_id
  os.environ['TOKEN'] 填入之宿世成的随机数uuid
  os.environ['WECHATY_PUPPET_SERVICE_ENDPOINT']刚摆设的服务器所在 端口须要与之前第一步设定的划一
    bot.on方法
  监听变乱:
  比方scan变乱:当须要扫码登录时触发,尚有比如login登录乐成后触发,room-join到场群聊触发更多详情可建文档
    还须要留意的几个紧张方法:
  1.msg.is_self() 是否自己(呆板人)发出的消息,呆板人发的消息也会进入当前函数
  2.msg.type() 判断消息范例,留意:比如到场群聊大概退出群里都会进入当期函数
  更多可见文档
  本地运行的话就可以实现一个简单的呆板人,向其发送ding则会收到dong的复兴
   至此,微信呆板人搭建,可根据个性需求复兴个性内容。
  如须要摆设到服务器还须要构建docker镜像,以下为懒人办法创建Dockerfille,Makefile,requirements.txt,如以下目次

Dockerfille

  1. WORKDIR /bot
  2. COPY requirements.txt requirements.txt
  3. COPY Makefile Makefile
  4. RUN make install
  5. COPY . .
  6. CMD [ "make", "run"]
复制代码
基于python3.8的情况
Makefile

  1. P=$(shell pwd)
  2. .PHONY: build
  3. build:
  4.    docker build -t py-wechaty-template-bot:latest .
  5. .PHONY: dockerrun
  6. dockerrun:
  7.    docker run -it -d -v $(P):/bot --name bot -p 8005:8005 py-wechaty-template-bot:latest
  8. .PHONY: bot
  9. bot:
  10.    make build
  11.    make dockerrun
  12. .PHONY: install
  13. install:
  14.    pip install -r requirements.txt
  15. .PHONY: run
  16. run:
  17.    python bot.py
复制代码
  留意端口不能与之前的服务端口重复
  requirements.txt

  1. wechaty
  2. wechaty-plugin-contrib
  3. quart
  4. python-dotenv
  5. docker
  6. apscheduler
  7. dataclasses-json
  8. urllib3 == 1.26
  9. pymysql
复制代码
  特别留意:urllib3最好安装1.26版本本人颠末频频失败后总结
    在当前目次运行 make bot 即可摆设上服务器
  文心一言

第一步开通服务

   打开千帆模子,选中左侧菜单计费管理,选择开通服务

    选中预置服务 勾选前三个 点击下一步

    根据提示直到开通乐成
    选择左边应用接入,创建应用,输入应用名称形貌、创建

    记着API Key和Secret Key 鉴权接口须要

  第二步调用api

   获取鉴权的token
鉴权文档

    利用ERNIE-Bot模子 文档所在:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11
  重点说一下messages参数格式
  messages是一个谈天上下文信息,一个成员代表单轮对对话,数组长度必须为奇数
  比方:
  1. messages=[
  2.      {
  3.       "role": "user",
  4.       "content": "你好"
  5.      },
  6.       {
  7.       "role": "assistant",
  8.       "content": "你好!"
  9.      },
  10.      {
  11.       "role": "user",
  12.       "content": "你叫什么名字"
  13.      }
  14. ]
复制代码
  role:user: 表现用户 assistant: 表现对话助手
  content:对话内容
  每次为奇数也就是代表用户末了的提问,如果长度为1那么就是一次新的回话
  接下来封装api,联合微信呆板人就可以打造自动复兴的微信呆板人了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表