基于python的微信机器人开发_python 微信机器人
【实例简介】
【实例截图】
【核心代码】
from config import TOKEN,XML_STR
from flask import Flask, request, make_response
import hashlib
import xml.etree.ElementTree as ET
from weather import get_weather
from joke import get_joke
app = Flask(__name__) # 实例化一个Flask app
@app.route('/message', methods=['GET', 'POST']) # 路由
def chatme(): # 定义控制器函数gf
if request.method == 'GET': # GET请求
data = request.args # 获取GET请求的参数
token = TOKEN # 微信接口调用的token
signature = data.get('signature', '') # 微信接口调用的签名
timestamp = data.get('timestamp', '') # 微信接口相关时间戳参数
nonce = data.get('nonce', '') # 微信接口相关nonce参数
echostr = data.get('echostr', '') # 微信接口相关echostr参数
s = [timestamp, nonce, token]
s = ''.join(s).encode("utf-8") # 连接字符串用来校验签名
if hashlib.sha1(s).hexdigest() == signature: # 校验签名
return make_response(echostr)
else: # 响应签名错误
return make_response("signature validation error")
if request.method == 'POST':
xml_str = request.stream.read()
xml = ET.fromstring(xml_str)
toUserName = xml.find('ToUserName').text
fromUserName = xml.find('FromUserName').text
createTime = xml.find('CreateTime').text
msgType = xml.find('MsgType').text
# 判断是否文本消息
if msgType != 'text':
reply = XML_STR % (
fromUserName,
toUserName,
createTime,
'text',
'Unknow Format, Please check out'
)
return reply
content = xml.find('Content').text
msgId = xml.find('MsgId').text
if u'笑话' in content: # 输出笑话
content = get_joke()
elif content[-2:] == "天气": # 输出天气
keyword = content[:-2]
if len(keyword) < 2:
content = '请输入正确的城市名称'
return XML_STR % (fromUserName, toUserName, createTime, msgType, content)
content = get_weather(keyword)
else:
# 输出反话
if type(content).__name__ == "unicode":
content = content[::-1]
content = content.encode('UTF-8')
elif type(content).__name__ == "str":
print(type(content).__name__)
content = content
content = content[::-1]
# 返回xml文件
reply = XML_STR % (fromUserName, toUserName, createTime, msgType, content)
return reply
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8088,debug=True)
【文件目录】
wechat_robot
├── README.md
├── config.py
├── joke.py
├── main.py
├── requirements.txt
├── test.py
├── weather.py
└── wechat_robot.py
0 directories, 8 files
基于python的微信机器人开发_python 微信机器人相关推荐
- 据说这是熟练掌握python的爷们_dongbei 是一门基于 Python 3 二次开发的东北方言编程语言...
dongbei - 东北方言编程语言 学编程,就整东北浪! 体格咋地 扫码关注原作者微信公众号"老万故事会": 引言 dongbei是啥?它是一门以东北方言词汇为基本关键字的以人为 ...
- python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程
本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...
- 学习《Flask Web开发:基于Python的Web应用开发实战》分享
学习<Flask Web开发:基于Python的Web应用开发实战>分享一直在说学习Python,对同事,对朋友,都说我正在学习Python,这无形给自己一定的压力,促使自己要去学习,进步 ...
- python自动化工具开发_初识TPOT:一个基于Python的自动化机器学习开发工具
1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...
- 《FlaskWeb开发:基于Python的Web应用开发实战》笔记
开源库的cdn加速 可以在这里直接搜索复制script链接 https://www.bootcdn.cn/ requirements.txt文件的生成与使用 生成requirements文件:$ pi ...
- python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程
本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...
- 《Flask Web开发:基于Python的Web应用开发实战》笔记(原创)
内容提要 在学习"狗书"<Flask Web开发:基于Python的Web应用开发实战>的过程中,一直遇到各种各样的坑.该书的第一部分是"Flask简介&qu ...
- 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)
目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构 前言 学习Python也有一个半月时间了,学到现在感觉还是 ...
- 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(下)
目录 前言 第8章 用户认证 第9章 用户角色 第10章 用户资料 第11章 博客文章 第12章 关注者 第13章 用户评论 第14章 应用编程接口 前言 第1章-第7章学习实践记录请参见:< ...
最新文章
- 【牛腩新闻发布系统】系统发布06
- 第 127 章 Piranha - Cluster administation tools
- WebGL(五)——WEBGL缓冲区,绘制三角形
- UrlRewrite(Url重写技术)
- 网管交换机怎么设置?网管交换机设置方法
- C#水晶报表,窗体不显示,闪退
- 回首十年——写给还在各等级教育中盲目学习的人
- python将一组数据转化为列表_Pandas将列表(List)转换为数据框(Dataframe)
- “System.InvalidOperationException”类型的未经处理的异常在 ESRI.ArcGIS.AxControls.dll 中发生...
- Blender的常用快捷键,学习必备
- 日程提醒app android,手机里有提醒日程安排的软件吗?
- 防范WiFi探针嗅探敏感数据的保护方法
- 经历过CMMI后的体会和总结,为什么别人的时间总是比你的值钱
- 手写由链表设计的简易队列
- 华为路由器修改telnet,ssh密码
- 8086怎么输出数组_鸣小亮C语言笔记(5)——数组
- 在虚拟机上使用SoftRoCE部署SPDK NVMe-oF
- [导入]MAGIC CYNDI魔幻心凌
- 豆瓣电影Top250爬虫
- 服务器两个网站公用一个数据库,两个服务器共用数据库吗