Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

62 lines
1.5KB

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "time"
  6. )
  7. type commandFunction func(*openIDSessionData, InWechatMsg) bool
  8. var commandMap = map[string]commandFunction{
  9. "版本信息": cmdVersion,
  10. "version": cmdVersion,
  11. //"所有命令": allCommand, //include it will cause initialization loop
  12. "echo": cmdEcho,
  13. "回音": cmdEcho,
  14. }
  15. func (ss *openIDSessionData) serveCommand(in InWechatMsg) (processed bool) {
  16. if in.header.MsgType == "text" {
  17. cmd := in.body.(TextMsg).Content
  18. if f, hasFunction := commandMap[cmd]; hasFunction {
  19. return f(ss, in)
  20. }
  21. if cmd == "所有命令" || cmd == "all command" {
  22. return allCommand(ss, in)
  23. }
  24. }
  25. processed = false
  26. return
  27. }
  28. func allCommand(ss *openIDSessionData, in InWechatMsg) (processed bool) {
  29. processed = true
  30. msg := "命令如下:\n"
  31. count := 0
  32. for k := range commandMap {
  33. count++
  34. msg = msg + fmt.Sprintf("%0d : %s \n", count, k)
  35. }
  36. str, _ := BuildTextMsg(in.header.FromUserName, msg)
  37. in.replyXML(str)
  38. return
  39. }
  40. func cmdVersion(ss *openIDSessionData, in InWechatMsg) (processed bool) {
  41. processed = true
  42. in.replyText("这是测试版本" + time.Now().Format("2006/01/02 03:04:05"))
  43. return
  44. }
  45. func cmdEcho(ss *openIDSessionData, in InWechatMsg) (processed bool) {
  46. processed = true
  47. in.replyText("请输入不同类型的微信信息,比如文字,图片,视频,地址,链接,我们将原样回应您")
  48. procEcho.init(ss)
  49. procEcho.intro(ss)
  50. procEcho.start(ss, in)
  51. log.Println("外面的 procedure=" + ss.Procedure)
  52. return
  53. }