参考一个微信开发的代码,通过关键字关联到函数去执行,我运行后 刚刚测试居然好使,发出来大家讨论下有啥优化的地方! 代码如下
# -*- 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())
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.