handlers.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package telegram
  2. import (
  3. "app/commons/core"
  4. tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
  5. )
  6. // HandleMessage 处理消息
  7. func HandleMessage(msg *tgbotapi.Message) {
  8. if msg == nil {
  9. return
  10. }
  11. // 记录消息
  12. core.Log.Infof("收到消息 - Chat: %d, User: %s, Text: %s",
  13. msg.Chat.ID, msg.From.UserName, msg.Text)
  14. // 自动同步群组信息到数据库
  15. if msg.Chat.Type == "group" || msg.Chat.Type == "supergroup" {
  16. go SyncGroupInfo(msg.Chat)
  17. }
  18. // 处理新成员加入
  19. if msg.NewChatMembers != nil {
  20. handleNewMembers(msg)
  21. return
  22. }
  23. // 处理命令
  24. if msg.IsCommand() {
  25. handleCommand(msg)
  26. return
  27. }
  28. // 处理普通消息
  29. handleNormalMessage(msg)
  30. }
  31. // HandleCallback 处理回调查询(按钮点击)
  32. func HandleCallback(callback *tgbotapi.CallbackQuery) {
  33. if callback == nil {
  34. return
  35. }
  36. core.Log.Infof("收到回调 - User: %s, Data: %s",
  37. callback.From.UserName, callback.Data)
  38. handleCallbackQuery(callback)
  39. }
  40. // handleNormalMessage 处理普通消息
  41. func handleNormalMessage(msg *tgbotapi.Message) {
  42. // 目前不处理普通消息
  43. // 可以在这里添加关键词回复等功能
  44. }
  45. // handleNewMembers 处理新成员加入
  46. func handleNewMembers(msg *tgbotapi.Message) {
  47. for _, member := range msg.NewChatMembers {
  48. if member.IsBot {
  49. // 如果是机器人加入,发送欢迎消息
  50. if member.ID == bot.Self.ID {
  51. sendGroupWelcome(msg.Chat.ID)
  52. }
  53. continue
  54. }
  55. // 发送新成员欢迎消息
  56. sendNewMemberWelcome(msg.Chat.ID, member.UserName, member.FirstName)
  57. }
  58. }