Python的WeRoBot框架开发公众号

简介: Python的WeRoBot框架开发公众号

最终的效果图:



20200303003159733.jpg



完整代码:


#coding:utf-8
# Filename:return_message5.py
# 被关注回复'Hello World!'
# 收到 笑话 回复糗百笑话,收到收到 电影 回复电影天堂最新电影,
# 收到 blog 回复我的简书博客,收到 音乐 回复一首音乐
# 收到 fight 回复一句话
from werobot import WeRoBot
import random
from werobot.replies import ArticlesReply, Article
robot = 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) - 1
    num = 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="Lansonli",
        description="Lansonli个人博客",
        img="https://avatar.csdnimg.cn/0/0/A/3_xiaoweite1_1568355559.jpg",
        url="https://lansonli.blog.csdn.net"
    )
    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.验证服务器


在公众号后台配置服务器


image.png


填入自己的服务器地址(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 werobot
robot = 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 进程号  # 结束进程


公众号测试账号,拥有所有权限


全局返回码说明,可以根据返回码信息调试接口,排查错误。


目录
相关文章
|
3月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
370 1
|
3月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
313 0
|
3月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
484 0
|
3月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
206 0
|
5月前
|
存储 监控 算法
淘宝买家秀 API开发实录Python(2025)
本文讲述了作者在电商开发领域,尤其是对接淘宝买家秀 API 接口过程中所经历的挑战与收获。从申请接入、签名验证、频率限制到数据处理和实时监控,作者分享了多个实战经验与代码示例,帮助开发者更高效地获取和处理买家秀数据,提升开发效率。
|
4月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
563 7
|
4月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
123 1
|
4月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
205 0
|
5月前
|
算法 程序员 API
电商程序猿开发实录:淘宝商品python(2)
本文分享了开发者在对接淘宝商品详情API过程中的真实经历,涵盖权限申请、签名验证、限流控制、数据解析及消息订阅等关键环节,提供了实用的Python代码示例,帮助开发者高效调用API,提升系统稳定性与数据处理能力。
|
5月前
|
API 数据安全/隐私保护 Python
拼多多批量上架软件, 电商一键上货发布工具,python电商框架分享
多线程批量上传架构,支持并发处理商品数据 完整的拼多多API签名和token管理机制

推荐镜像

更多