用 Python 和 werobot 框架开发公众号

 

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 进程号  # 结束进程

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专家:智能芯片国际竞争愈发激烈,应尽快制定国家标准

来源: 科技日报摘要:近日,十三届全国政协第一次双周协商座谈会在京召开。会议聚焦的话题是人工智能的发展与对策。夯实基础,提升原始创新能力中科院计算所智能处理器中心主任陈云霁做的就是智能芯片,作为智能芯片公司寒…

easyExcel 使用指南详解

来源:easyExcel 使用指南详解 - 知乎 easyExcel简介 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full g…

(转)Web Services使用多态(XmlInclude) ,支持自定义类型

Web Services使用多态(XmlInclude) 在Web Services方法中,往往使用的都是一个具体类型的参数,这个参数一般就是一个数据对象。ASP.NET Web Services通过声明XmlIncludeAttribute可以实现Web Services方法中运用多态。 XmlIncludeAttribute允许XmlSeriali…

激光破解太空通信难题

来源:新浪科技摘要:虽然目前而言无线电天线仍然是太空通信的支柱,但目前未来发展方向是激光通讯系统。在太空中,没有人会听到你的尖叫——因为声音不会在真空中传播,而且你需要某种类型的无线电波中继携载这些信息&…

Docker 原理、学习教程

Docker 官网 :https://www.docker.com/ Docker Hub:https://registry.hub.docker.com/search?qkali Docker 容器超详细讲解:https://www.linuxidc.com/Linux/2018-08/153712.htm Docker Compose:https://www.runoob.com/docker…

从自动驾驶到基因编辑,这15项发明专利改变了世界

来源:资本实验室近期,中兴通讯受美国制裁的事件戳中了国人心中的“痛”,也对我们长期受制于人的芯片核心技术与产业敲响了警钟。我们近乎被动地发现,在科技创新,尤其是技术驱动型创新方面,我们的差距到底有…

org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory

引入cryptofront-2.1.6.jar后dom4j执行异常 解决方案,强制在cryptofront-2.1.6.jar加载前,加载dom4j dom4j引入不完整

Cheat Engine 教程( 1 - 9 通关 )

工具包:https://down.52pojie.cn/Tools/Debuggers/ Cheat Engine 官网:https://www.cheatengine.org/ ce 修改器绿色版(cheat engine) v7.4 官方最新版:http://www.downcc.com/soft/21673.html 这个教程全部是来自 Cheat Engine 软件的中的…

人工智能元老痛批IBM:沃森是个骗局,这根本不是认知

作者 Roger Schank李林 编译整理量子位 出品 | 公众号 QbitAI一篇质疑IBM的旧文今天在HackerNews上火了起来,虽已时隔两年,这篇文章还是引起了网友们的强烈共鸣。文章作者Roger Schank是AI领域元老人物,AAAI Fellow,曾任耶鲁大学人…

OllyDBG完美教程(超强入门级)

OllyDBG 视频教程:https://www.bilibili.com/video/av6889190 动态调试工具之OllyDbg(OD)教程:https://www.bilibili.com/video/av70600053 使用 OllyDbg 从零开始 Cracking.chm ( 58章 ):https://pan.baidu.com/s/18iXvF5I_No4-a1DK3jKrbg …

12种Bean转换

来源:再见 BeanUtils!性能真拉跨! 一、前言 二、性能测试对比 三、12种转换案例 1. get\set 2. json2Json 3. Apache copyProperties 4. Spring copyProperties 5. Bean Mapping 6. Bean Mapping ASM 7. BeanCopier 8. Orika 9. Do…

上海人工智能再出重磅!寒武纪科技发布新一代云端AI芯片,联想、曙光、科大讯飞发布相关应用...

来源:文汇网 作者:许琦敏、郭超豪峰值功耗不超过110瓦,等效理论峰值速度可达每秒166.4万亿次定点运算。寒武纪科技在上海发布了中国第一款云端智能芯片——Cambricon MLU100芯片和板卡产品、寒武纪1M终端智能处理器IP产品。联想、曙光和科大…

OD 快捷键使用大全。非常详细( 游戏逆向分析必看 )+ OD 断点 使用大全

From:https://www.cnblogs.com/YiShen/p/9742872.html OllyDBG 快捷键 OllyDbg 窗口通用快捷键 快捷键    功能      Ctrl F2重启程序,即重新启动被调试程序( 重新载入程序 )。如果当前没有调试的程序,Oll…

电子发票中数字签名的提取解析

前言 随着电子信息技术的发展与成熟,加上国家的大力推广,电子发票已经开始慢慢取代纸质发票。相比传统的纸质发票,电子发票除了绿色环保,节约成本之外,更重要的是电子发票采取电子签章实现发票签名、电子盖章&#xff…

无人车、超级高铁、智慧城市......这是一份来自未来的出行报告

来源:机器之能 作者:Charles McLellan 编译:王宇欣在新兴技术的驱动下,运输业即将迎来第二春。虽然个中细节还需打磨,但未来的运输系统必然会实现数据驱动、彼此相关联、高度自动化。有关技术与运输业未来的文章比比皆…

在 VC++ 中使用 内联汇编

From:https://blog.csdn.net/root19881111/article/details/8450266 VC内联汇编(MSDN相关内容完整翻译):http://www.cppblog.com/xingkongyun/archive/2008/12/21/70003.html 调 call 和 偷功能 时,VC中内联汇编容易产生的错误:…

OFD 版式技术解析系列(一):开篇

在版式电子文件领域,大家比较熟悉的就是 PDF(Portable Document Format)格式,该格式由 Adobe 公司在 1992 年发布,迄今已经有 28 个年头,2008 年 7 月 1 日,IS 组织正式发布 PDF 的国际标准,PDF 成为了独立…

无人驾驶急需解决:规划控制和传感器价格高两大问题

来源:AI科技大本营 作者 :Mavis2017 年百度 AI 开发者大会上,现场视频连线了正乘坐无人驾驶汽车行驶在五环上朝会场赶来的李彦宏,他坐在副驾驶上解说,身边司机的双手并没有触碰方向盘,也正是因为这句话&am…

CString 与 LPCWSTR、LPSTR、char*、LPWSTR 等类型的转换

From:https://www.cnblogs.com/leanee/articles/2940088.html char [] 到 LPWSTR转换的一个具体应用:http://www.cppblog.com/lateCpp/articles/153358.html CString详细讲解:https://blog.csdn.net/qq_41786318/article/details/81989217 …

ofd电子文档内容分析工具(分析文档、签章和证书)

前言 ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。 加入QQ交流群:618168615。获取下载程序。 ofd文件解压后,可以看到…