【实例简介】

【实例截图】

【核心代码】

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 微信机器人相关推荐

  1. 据说这是熟练掌握python的爷们_dongbei 是一门基于 Python 3 二次开发的东北方言编程语言...

    dongbei - 东北方言编程语言 学编程,就整东北浪! 体格咋地 扫码关注原作者微信公众号"老万故事会": 引言 dongbei是啥?它是一门以东北方言词汇为基本关键字的以人为 ...

  2. python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程

    本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...

  3. 学习《Flask Web开发:基于Python的Web应用开发实战》分享

    学习<Flask Web开发:基于Python的Web应用开发实战>分享一直在说学习Python,对同事,对朋友,都说我正在学习Python,这无形给自己一定的压力,促使自己要去学习,进步 ...

  4. python自动化工具开发_初识TPOT:一个基于Python的自动化机器学习开发工具

    1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...

  5. 《FlaskWeb开发:基于Python的Web应用开发实战》笔记

    开源库的cdn加速 可以在这里直接搜索复制script链接 https://www.bootcdn.cn/ requirements.txt文件的生成与使用 生成requirements文件:$ pi ...

  6. python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程

    本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...

  7. 《Flask Web开发:基于Python的Web应用开发实战》笔记(原创)

    内容提要 在学习"狗书"<Flask Web开发:基于Python的Web应用开发实战>的过程中,一直遇到各种各样的坑.该书的第一部分是"Flask简介&qu ...

  8. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)

    目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构 前言 学习Python也有一个半月时间了,学到现在感觉还是 ...

  9. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(下)

    目录 前言 第8章 用户认证 第9章 用户角色 第10章 用户资料 第11章 博客文章 第12章 关注者 第13章 用户评论 第14章 应用编程接口   前言 第1章-第7章学习实践记录请参见:< ...

最新文章

  1. 【牛腩新闻发布系统】系统发布06
  2. 第 127 章 Piranha - Cluster administation tools
  3. WebGL(五)——WEBGL缓冲区,绘制三角形
  4. UrlRewrite(Url重写技术)
  5. 网管交换机怎么设置?网管交换机设置方法
  6. C#水晶报表,窗体不显示,闪退
  7. 回首十年——写给还在各等级教育中盲目学习的人
  8. python将一组数据转化为列表_Pandas将列表(List)转换为数据框(Dataframe)
  9. “System.InvalidOperationException”类型的未经处理的异常在 ESRI.ArcGIS.AxControls.dll 中发生...
  10. Blender的常用快捷键,学习必备
  11. 日程提醒app android,手机里有提醒日程安排的软件吗?
  12. 防范WiFi探针嗅探敏感数据的保护方法
  13. 经历过CMMI后的体会和总结,为什么别人的时间总是比你的值钱
  14. 手写由链表设计的简易队列
  15. 华为路由器修改telnet,ssh密码
  16. 8086怎么输出数组_鸣小亮C语言笔记(5)——数组
  17. 在虚拟机上使用SoftRoCE部署SPDK NVMe-oF
  18. [导入]MAGIC CYNDI魔幻心凌
  19. 豆瓣电影Top250爬虫
  20. 服务器两个网站公用一个数据库,两个服务器共用数据库吗

热门文章

  1. iis put漏洞poc
  2. 【日常学习】最全JavaScript使用详解
  3. Python-Super
  4. cesium 闪烁点 实体闪烁
  5. react 公告栏组件+定时器写法优化
  6. 用vb编了个数独计算器
  7. C#开源资源大汇总nbsp;C#开源资源大汇…
  8. 【学习笔记】BMC2022-AProt
  9. 内存访问顺序 - part2: 屏障及Linux kernel中屏障的使用
  10. 服务器可以用无线上网卡么,4G无线上网卡哪个好用 4g无线上网卡使用方法【详解】...