【实例简介】

【实例截图】

【核心代码】

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. ava.lang.UnsatisfiedLinkError:
  2. abb工业机器人指令lf怎么用_工业机器人课程:ABB知识点27 | I/O控制指令
  3. 使用BH1750测量激光发射器的强度
  4. 工程师姓什么很重要!别再叫我“X工”!!!
  5. 初学Windows编程笔记1——窗口和消息
  6. 黑客与画家 part1 版权声明 part2 O'Reilly Media,Ina.介绍
  7. VBScript - Round Function
  8. 从wordpress到octopress
  9. 【英语学习】【Level 08】U03 My Choice L2 All-time favorite character
  10. Java学习之反射机制及应用场景
  11. redis命令_INCR
  12. keevi源地址_2019年越狱源地址排行是怎样的?
  13. linux下怎么打开bin文件怎么打开,怎么打开bin格式的文件
  14. 为什么在Excel文档单元格中输入长段数字就变为公式?干货来啦!如何解决在excel单元格中输入数字变为公式的问题?
  15. EXPLORER参数打开并高亮选定文件。
  16. 系统集成---合同法、著作权法、招标投标实施条例+政府采购法实施条例
  17. xxl job踩坑记
  18. uniapp Apple iOS 绑定解绑
  19. Logic Pro X for Mac(音乐制作软件)
  20. 如何在GitHub上建立一个自己的网站

热门文章

  1. json文件批量转为txt文件
  2. 单例模式的两种实现方式:恶汉式和懒汉式
  3. win+r 快捷命令
  4. turbolinux mysql 5.0 cluste,PostgreSQL存在多个安全漏洞
  5. Linux总线之I2C
  6. “环签名、Pedersen承诺、范围证明”三者可擦出不一样的火花
  7. 电源的源效应和负载效应
  8. synchronized 字节码层原理解析及锁升级
  9. 为何说KubeMQ会是Kafka的替代品?
  10. python登录并关注公众号_Python|Flask实现登录功能