From:用 Python 和 werobot 框架开发公众号:https://www.jianshu.com/p/a517746a900f

WeRoBot 官方文档 :https://werobot.readthedocs.io/zh_CN/latest/

Github :https://github.com/offu/WeRoBot

Python — WeRobot(微信公众号开发):https://www.cnblogs.com/cxys85/p/10270277.html

安装

推荐使用 pip 进行安装:pip install werobot

简单示例 Hello world

一个非常简单的 Hello World 微信公众号,会对收到的所有文本消息回复 Hello World

import werobotrobot = werobot.WeRoBot(token='tokenhere')@robot.text
def hello_world():return 'Hello World!'robot.run()

微信官方文档

官方文档地址:https://developers.weixin.qq.com/doc/

公众号测试账号,拥有所有权限:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

全局返回码说明,可以根据返回码信息调试接口,排查错误:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Global_Return_Code.html

用 Python 和 werobot 框架开发公众号

自用的公众号,由于权限少只有最简单的功能:匹配关键字,回复文字、音乐、图文

最终的效果图:

完整代码:

# coding:utf-8
# Filename:return_message5.py
# 被关注回复'Hello World!'
# 收到 笑话 回复糗百笑话,收到收到 电影 回复电影天堂最新电影,
# 收到 blog 回复我的简书博客,收到 音乐 回复一首音乐
# 收到 fight 回复一句话from werobot import WeRoBot
import random
from werobot.replies import ArticlesReply, Articlerobot = WeRoBot(token='your_token')# 明文模式不需要下面三项
# robot.config["APP_ID"]=''
# robot.config["APP_SECRET"]=''
# robot.config['ENCODING_AES_KEY'] = ''# 被关注
@robot.subscribe
def subscribe(message):return '''Hello World!
And nice to meet you.
:)
'''# 读取文档里的笑话,把前三行存在 data2 里,字符串太长公众号会报错
def joke_data():filename = 'qiushibaike.txt'f = open(filename, 'r')data = f.read()f.close()data1 = data.split()data2 = ''for data_i in data1[0:3]:data2 += data_i + '\n' + '\n'return data2# 读取文档里的电影名称
def movie_name():filename = 'movies_name.txt'f = open(filename, 'r')data = f.read()f.close()return data# 从三首音乐里随机选一首
def music_data():music_list = [['童话镇', '陈一发儿', 'https://e.coka.la/wlae62.mp3', 'https://e.coka.la/wlae62.mp3'],['都选C', '缝纫机乐队', 'https://files.catbox.moe/duefwe.mp3', 'https://files.catbox.moe/duefwe.mp3'],['精彩才刚刚开始', '易烊千玺', 'https://e.coka.la/PdqQMY.mp3', 'https://e.coka.la/PdqQMY.mp3']]num = random.randint(0, 2)return music_list[num]# 读取 fight.txt 里的句子,随机返回一句
def get_fighttxt():filename = 'fight.txt'f = open(filename, 'r')data = f.read()f.close()data1 = data.split()max_num = len(data1) - 1num = random.randint(0, max_num)data2 = data1[num]return data2# 匹配 笑话 回复糗百笑话
@robot.filter('笑话')
def joke(message):data = joke_data()return data# 如果用
# @robot.text
# def joke(message):
#    if message.content == "笑话":
# 会报错
# UnicodeWarning: Unicode equal comparison failed to
# convert both arguments to Unicode - interpreting them as being unequal# 匹配 电影 回复电影名称
@robot.filter('电影')
def movie(message):name = movie_name()return name# blog 回复个人博客
@robot.filter('blog')
def blog(message):reply = ArticlesReply(message=message)article = Article(title="v1coder",description="我的个人博客",img="https://upload.jianshu.io/users/upload_avatars/9691564/d4404291-308a-4159-b324-4ae400d8c977.png",url="https://www.jianshu.com/u/7cb04d09491e")reply.add_article(article)return reply# 匹配 音乐 回复一首歌
@robot.filter('音乐')
def music(message):music1 = music_data()return music1# 匹配 fight 回复一句话
@robot.filter('fight')
def fight(message):data = get_fighttxt()return data# 文本消息返回原文
@robot.text
def echo(message):return message.content# 其他消息返回
@robot.handler
def hello(message):return '(O_o)??'robot.config['HOST'] = '0.0.0.0'
robot.config['PORT'] = 80
robot.run()

分步讲解:

公众号分为企业号、服务号和订阅号,我们这里用订阅号,适用于个人,注册订阅号和购买服务器的过程不再赘述。

1.验证服务器

在公众号后台配置服务器

填入自己的服务器地址(URL)和Token:

服务器地址可以是IP,也可以是域名,但必须以http://或https://开头,分别支持80端口和443端口。

Token随便填,一会代码里用得到。

选择明文模式,先不提交。

服务器上部署代码

先安装werobot:

pip install WeRoBot

创建 hello_world.py,代码如下:

#coding:utf-8
# Filename:hello_world.py
# 验证服务器,并且收到的所有消息都回复'Hello World!'import werobotrobot = werobot.WeRoBot(token='your token')# @robot.handler 处理所有消息
@robot.handler
def hello(message):return 'Hello World!'# 让服务器监听在 0.0.0.0:80
robot.config['HOST'] = '0.0.0.0'
robot.config['PORT'] = 80
robot.run()

'your token' 处填你的Token,然后运行

python hello_world.py

返回公众号的基本配置页面,点击提交,如果没有报错就验证成功了,最后点击“启用配置”

2.处理文本消息

# @robot.text 只处理文本消息
@robot.text
def echo(message):return '111'

3.匹配文本的两种方式

# 第一种方式
@robot.text
def joke(message):if message.content == "joke":
# 如果把"joke"换成"笑话"就会报错,这种方式不能匹配中文# 第二种方式
@robot.filter('笑话')
def joke(message):
# 用 @robot.filter() 可以匹配中文

4.读取本地文档

# 以只读的方式,读取同目录文档 movies_name.txt 的内容
filename = 'movies_name.txt'
f = open(filename, 'r')
data = f.read()
f.close()
return data

5.回复图文消息

# blog 回复个人博客
from werobot.replies import ArticlesReply, Article
@robot.filter('blog')
def blog(message):reply = ArticlesReply(message=message)article = Article(title="v1coder",  #标题description="我的个人博客",  #简介img="https://*****.png",  #图片链接url="https://www.jianshu.com/u/7cb04d09491e"  #点击图片后跳转链接)reply.add_article(article)return reply

6.回复音乐

# 匹配 音乐 回复一首歌
@robot.filter('音乐')
def music(message):# 返回一个长度为四的列表return ['都选C','缝纫机乐队','https://files.catbox.moe/duefwe.mp3','https://files.catbox.moe/duefwe.mp3']

分布讲解完毕。

最后:

结束当前代码运行:Ctrl + C

使程序在Linux下后台运行 (关掉终端继续让程序运行)的方法:

输入命令:
nohup 你的shell命令 &
回车,使终端回到shell命令行

停止程序在 Linux 后台运行的方法:

ps x  # 显示所有进程kill 进程号  # 结束进程

用 Python 和 werobot 框架开发公众号相关推荐

  1. Python的WeRoBot框架开发公众号

    最终的效果图: 完整代码: #coding:utf-8 # Filename:return_message5.py # 被关注回复'Hello World!' # 收到 笑话 回复糗百笑话,收到收到 ...

  2. python公众号开发框架_Python的WeRoBot框架开发公众号-Go语言中文社区

    最终的效果图: 完整代码: #coding:utf-8 # Filename:return_message5.py # 被关注回复'Hello World!' # 收到 笑话 回复糗百笑话,收到收到 ...

  3. python微信公众号翻译功能_自学Python笔记:给微信公众号搭建“成绩查询”功能...

    原标题:自学Python笔记:给微信公众号搭建"成绩查询"功能 期末考试 临近年末,全国各地都在上演一场大戏<期末考试>,考完试无论什么样的结果总想尽快看到自己一个学期 ...

  4. 微信小程序后端框架|微信公众号后端框架(C# WebAPI)

    微信小程序后端框架|微信公众号后端框架(C# WebAPI) 微信小程序 简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的 ...

  5. 人工智能python营公众号_认真推荐几个Python和AI方面的公众号

    原标题:认真推荐几个Python和AI方面的公众号 干货来啦!! Python目前是最火的语言,今天小编给大家推荐几个在Python和机器学习领域领域非常有名的几个大号,都是高质量的公众号! Cros ...

  6. python判断题题库大数据技术_智慧树_大数据分析的python基础_搜题公众号

    智慧树_大数据分析的python基础_搜题公众号 更多相关问题 社会公众可以查阅烟草专卖行政主管部门的监督检查记录.() 公民.法人或者其他组织不得利用自动售货机销售烟草制品.() 烟草广告中不得有下 ...

  7. python实现微信hook_GitHub - gemgin/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...

    wechathook 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取 注入器 注入dll进程序中 DLL 实现hook功能,申请内存,修改call,在里 ...

  8. python实现微信hook_GitHub - redtips/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...

    wechathook 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取 注入器 注入dll进程序中 DLL 实现hook功能,申请内存,修改call,在里 ...

  9. python实现微信hook_GitHub - zhouxionger/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...

    wechathook 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取 注入器 注入dll进程序中 DLL 实现hook功能,申请内存,修改call,在里 ...

最新文章

  1. 在别的电脑上运行cg程序出现错误的解决办法
  2. p-unit - 单元级别开源性能测试框架
  3. Python 数据分析包:pandas 基础
  4. 091028 工作记录
  5. Android多媒体之SoundPool
  6. HarmonyOS之深入解析编译构建的配置和代码混淆
  7. ios基础之 ARC
  8. 模为2的逆元是什么_两种求模m逆元的方法
  9. 计算机专业学的东西其实很少,为什么计算机专业的学生要学习使用Linux系统?...
  10. linux下mysql数据的导出和导入
  11. 刚体转动的惯性张量和转动惯量的区别和联系
  12. Roslyn 静态分析
  13. 4星|《经济学人》熊彼特系列2017合集:美国人逐渐按自己的职业及社会价值而聚居至不同区域...
  14. linux 防火墙firewall规则策略
  15. css线条伸缩_CSS3弹性伸缩布局(上)——box布局
  16. 基于Proteus学习单片机系列(十一)——LCD12864
  17. C#与PLC通信开发之三菱FX系列PLC
  18. android sqlite 分词,sqlite fts3自定义分词器 zz
  19. 你真的理解亲密关系的价值吗?
  20. C10K问题与IO多路复用

热门文章

  1. 如果有一天,小夕不再萌...
  2. 美团 iOS 工程 zsource 命令背后的那些事儿
  3. 论文浅尝 | 从树结构的长短期记忆网络改进语义表示
  4. 前端如何做极致的首屏渲染速度优化
  5. Codeforces 1139F Dish Shopping 树状数组套平衡树 || 平衡树
  6. [并查集][排序][dfs][启发式合并] JZOJ P3635 Peaks
  7. 前端开发神器 vscode 常用快捷键
  8. mysql的limit、order by和group by的用法
  9. 模块化开发之sea.js实现原理总结
  10. 牛客21312 神秘餐馆