telegram.go 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package third
  2. import (
  3. "fmt"
  4. jsoniter "github.com/json-iterator/go"
  5. mhayaHttp "github.com/mhaya/extend/http"
  6. "github.com/mhaya/game/game_cluster/internal/data"
  7. mhayaLogger "github.com/mhaya/logger"
  8. )
  9. type GetIfChannelResp struct {
  10. //Result struct {
  11. // Status string `json:"status"`
  12. //} `json:"result"`
  13. Ok bool `json:"ok"`
  14. Result map[string]interface{} `json:"result"`
  15. }
  16. // 判断是否是VIP
  17. func GetIfPremium(openid int64) int32 {
  18. ret := data.SdkConfig.Get(2)
  19. params := map[string]string{}
  20. url := fmt.Sprintf("%v%v/getChatMember?chat_id=%v&user_id=%v", ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, openid)
  21. rs, _, err := mhayaHttp.GET(url, params)
  22. if err != nil {
  23. mhayaLogger.Warnf("third.GetIfChannel 验证频道失败 url = %v, bottoken = %v, ChatIDName = %v, userID = %v",
  24. ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, openid,
  25. err.Error())
  26. return 0
  27. }
  28. var resp GetIfChannelResp
  29. err = jsoniter.Unmarshal(rs, &resp)
  30. if err != nil {
  31. mhayaLogger.Warnf("third.GetIfChannel 验证频道失败 url = %v, bottoken = %v, ChatIDName = %v, userID = %v",
  32. ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, openid,
  33. err.Error())
  34. return 0
  35. }
  36. if !resp.Ok {
  37. mhayaLogger.Warnf("third.GetIfChannel 验证频道失败 url = %v, bottoken = %v, ChatIDName = %v, userID = %v",
  38. ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, openid,
  39. resp.Result["description"])
  40. return 0
  41. }
  42. isPremium, ok := resp.Result["is_premium"].(bool)
  43. if !ok {
  44. mhayaLogger.Warnf("Warning: 'is_premium' field not found in member info")
  45. return 0
  46. }
  47. if isPremium {
  48. return 1
  49. }
  50. return 0
  51. }
  52. // 判断用户是否是成员
  53. func GetIfChannel(openid int64) int32 {
  54. ret := data.SdkConfig.Get(2)
  55. url := fmt.Sprintf("%v%v/getChatMember?chat_id=%v&user_id=%v", ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, openid)
  56. mhayaLogger.Infof("getChatMember url = %v", url)
  57. rs, _, err := mhayaHttp.GET(url, nil)
  58. if err != nil {
  59. mhayaLogger.Warnf("third.GetIfChannel 验证频道失败 url = %v, bottoken = %v, ChatIDName = %v, userID = %v",
  60. ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, openid,
  61. err.Error())
  62. return 0
  63. }
  64. var resp GetIfChannelResp
  65. err = jsoniter.Unmarshal(rs, &resp)
  66. if err != nil {
  67. mhayaLogger.Warnf("third.GetIfChannel 验证频道失败 url = %v, bottoken = %v, ChatIDName = %v, userID = %v",
  68. ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, openid,
  69. err.Error())
  70. return 0
  71. }
  72. ok := resp.Ok
  73. if !ok {
  74. mhayaLogger.Warnf("Warning: 'member' field not found in member info")
  75. return 0
  76. }
  77. if ok {
  78. isPremium, ok := resp.Result["status"].(string)
  79. if !ok {
  80. return 0
  81. }
  82. if isPremium == "member" {
  83. return 1
  84. }
  85. }
  86. return 0
  87. }