message_handler.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package main
  2. import (
  3. "strings"
  4. tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
  5. )
  6. func HandleMessage(reqMsg *tgbotapi.Message, botClient *tgbotapi.BotAPI) {
  7. LogInfo.Printf("Received a text message in chat %d [%s]:%s", reqMsg.Chat.ID, reqMsg.From.UserName, reqMsg.Text)
  8. msg := tgbotapi.NewMessage(reqMsg.Chat.ID, "")
  9. switch strings.Split(reqMsg.Text, " ")[0] {
  10. case "/start":
  11. text, err := dBConnector.AddUser(reqMsg.Chat)
  12. if err != nil {
  13. LogError.Println(err)
  14. text = "Internal error, please contact bot developer"
  15. }
  16. msg.Text = text
  17. break
  18. case "/stop":
  19. text, err := dBConnector.DeleteUser(reqMsg.Chat)
  20. if err != nil {
  21. LogError.Println(err)
  22. text = "Internal error, please contact bot developer"
  23. }
  24. msg.Text = text
  25. break
  26. case "/forceupdate":
  27. UpdateData()
  28. msg.Text = "Done!"
  29. break
  30. case "/actual":
  31. if len(strings.Split(reqMsg.Text, " ")) > 1 {
  32. msg.Text = GetActualData(strings.Split(reqMsg.Text, " ")[1])
  33. } else {
  34. result := dBConnector.GetActualDataFromDatabase(reqMsg.Chat.ID)
  35. if (result == "nice"){
  36. return //TODO better somehow different
  37. }
  38. }
  39. break
  40. case "/setwallet":
  41. if len(strings.Split(reqMsg.Text, " ")) > 1 {
  42. text, err := dBConnector.SetWallet(reqMsg)
  43. if err != nil {
  44. LogError.Println(err)
  45. text = "An exception occurred while executing this command."
  46. }
  47. msg.Text = text
  48. } else {
  49. // LOL
  50. msg.Text = "An exception occurred while executing this command."
  51. }
  52. break
  53. case "/rate":
  54. msg.Text = GetActualRate()
  55. break
  56. case "/help":
  57. msg.Text = GetHelp()
  58. break
  59. case "/lastpayout":
  60. msg.Text = dBConnector.GetLastPayout(reqMsg.Chat.ID)
  61. break
  62. default:
  63. msg.Text = "Incorrect message"
  64. break
  65. }
  66. LogInfo.Printf("Replied with: %s", strings.ReplaceAll(msg.Text, "\n", "\\n"))
  67. botClient.Send(msg)
  68. }