package main import ( "fmt" "time" ) type commandFunction func(*openIDSessionData, InWechatMsg) bool var commandMap = map[string]commandFunction{ "版本信息": cmdVersion, "version": cmdVersion, //"所有命令": allCommand, //include it will cause initialization loop "echo": cmdEcho, "回音": cmdEcho, } func (ss *openIDSessionData) serveCommand(in InWechatMsg) (processed bool) { if in.header.MsgType == "text" { cmd := in.body.(TextMsg).Content if f, hasFunction := commandMap[cmd]; hasFunction { return f(ss, in) } if cmd == "所有命令" || cmd == "all command" { return allCommand(ss, in) } } processed = false return } func allCommand(ss *openIDSessionData, in InWechatMsg) (processed bool) { processed = true msg := "命令如下:\n" count := 0 for k := range commandMap { count++ msg = msg + fmt.Sprintf("%0d : %s \n", count, k) } str, _ := BuildTextMsg(in.header.FromUserName, msg) in.immediateResponse(str) return } func cmdVersion(ss *openIDSessionData, in InWechatMsg) (processed bool) { processed = true str, _ := BuildTextMsg(in.header.FromUserName, "这是测试版本"+time.Now().Format("2006/01/02 03:04:05")) in.immediateResponse(str) return } func cmdEcho(ss *openIDSessionData, in InWechatMsg) (processed bool) { in.immediateResponse("请输入不同类型的微信信息,比如文字,图片,视频,地址,链接,我们将原样回应您") procEcho.init(ss) procEcho.start(ss, in) return }