参考一个微信开发的代码,通过关键字关联到函数去执行,我运行后 刚刚测试居然好使,发出来大家讨论下有啥优化的地方! 代码如下
# -*- coding: utf-8 -*- # python3.6 # 小程序获取二维码示例 from bottle import response,route,run,template,request,redirect from bottle import get, post# or route import urllib import urllib.parse as up import urllib.request as ur import xml.etree.ElementTree as ET import json,time,os,re import hashlib import requests # from wx_api import * # from wx_config import * from wechatpy import parse_message msg_type_resp = {} class message(): type="text" cOntent="取消" def set_msg_type(msg_type): """ 储存微信消息类型所对应函数(方法)的装饰器 """ def decorator(func): msg_type_resp[msg_type] = func return func return decorator @set_msg_type('text') def text_resp(): """文本类型回复""" # 默认回复微信消息 respOnse= 'success' # 替换全角空格为半角空格 message.cOntent= message.content.replace(u' ', ' ') # 清除行首空格 message.cOntent= message.content.lstrip() # 指令列表 commands = { u'取消': cancel_command, u'^\?|^?': all_command } # 匹配指令 command_match = False for key_word in commands: if re.match(key_word, message.content): # 指令匹配后,设置默认状态 respOnse= commands[key_word]() command_match = True break if not command_match: # 匹配状态 state = get_user_state(openid) # 关键词、状态都不匹配,缺省回复 if state == 'default' or not state: respOnse= command_not_found() else: respOnse= state_commands[state]() return response def cancel_command(): print('cancel_command') def all_command(): print('all_command') def index(): try: get_resp_func = msg_type_resp[message.type] respOnse= get_resp_func() except KeyError: # 默认回复微信消息 respOnse= 'success' # 储存微信消息类型所对应函数(方法)的字典 print(index())