message_handler.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package handler
  2. import (
  3. "strings"
  4. "time"
  5. tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
  6. log "gogs.veloe.link/toomanysugar/GoEthemineTelegramBot/internal/logger"
  7. )
  8. func (ah ActionHandler )HandleMessage(reqMsg *tgbotapi.Message, botClient *tgbotapi.BotAPI) {
  9. log.LogInfo.Printf("Received a text message in chat %d [%s]:%s", reqMsg.Chat.ID, reqMsg.From.UserName, reqMsg.Text)
  10. args := strings.Split(reqMsg.Text, " ")
  11. prefix := "/"
  12. command := args[0]
  13. if (!strings.HasPrefix(command, prefix)) {
  14. return
  15. }
  16. command = strings.TrimPrefix(command, prefix)
  17. params := args[1:]
  18. var msgs []tgbotapi.MessageConfig
  19. var commandHandler func(chatId int64, params []string) []tgbotapi.MessageConfig
  20. switch command {
  21. case "start":
  22. commandHandler = ah.StartHandler
  23. break
  24. case "stop":
  25. commandHandler = ah.StopHandler
  26. break
  27. case "forceupdate":
  28. commandHandler = ah.ForceUpdateHandler
  29. break
  30. case "actual":
  31. commandHandler = ah.ActualHandler
  32. break
  33. case "setwallet":
  34. commandHandler = ah.SetWalletHandler
  35. break
  36. case "rate":
  37. commandHandler = ah.GetActualRateHandler
  38. break
  39. case "help":
  40. commandHandler = ah.GetHelpHandler
  41. break
  42. case "lastpayout":
  43. commandHandler = ah.LastPayoutHandler
  44. break
  45. default:
  46. return
  47. }
  48. msgs = commandHandler(reqMsg.Chat.ID, params)
  49. for n, m := range msgs {
  50. if n != 0 {
  51. time.Sleep(1 * time.Second)
  52. }
  53. botClient.Send(m)
  54. log.LogInfo.Printf("Replied with: %s", strings.ReplaceAll(m.Text, "\n", "\\n"))
  55. }
  56. }