Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "os"
  6. "os/signal"
  7. "syscall"
  8. "regexp"
  9. "net/http"
  10. "io/ioutil"
  11. "log"
  12. "bytes"
  13. "strings"
  14. "encoding/json"
  15. "time"
  16. "github.com/gookit/color"
  17. "github.com/bwmarrin/discordgo"
  18. "github.com/denisbrodbeck/machineid"
  19. )
  20.  
  21.  
  22. var T,_ = ioutil.ReadFile("token.txt")
  23. var Token string = strings.Replace(string(T), "\n", "", 1)
  24.  
  25. var Redeemed []string
  26.  
  27. func main() {
  28. fmt.Println("WardenClaimer")
  29. id, err := machineid.ProtectedID("claimer")
  30. if err != nil {
  31. log.Fatal(err)
  32. }
  33. fmt.Println(id)
  34. dg, err := discordgo.New(Token)
  35. _, err = dg.User("@me")
  36. if err != nil {
  37. fmt.Println("error creating Discord session,", err)
  38. return
  39. }
  40.  
  41. dg.AddHandler(messageCreate)
  42.  
  43. err = dg.Open()
  44. if err != nil {
  45. fmt.Println("error opening connection,", err)
  46. return
  47. }
  48. dg.AddHandler(messageCreate)
  49.  
  50. err = dg.Open()
  51. if err != nil {
  52. fmt.Println("error opening connection,", err)
  53. return
  54. }
  55.  
  56. fmt.Println("Bot is now running. Press CTRL-C to exit.")
  57. sc := make(chan os.Signal, 1)
  58. signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
  59. <-sc
  60. dg.Close()
  61. }
  62.  
  63. func redeem_code(code string, channel_id string) {
  64. client := &http.Client{}
  65. values := map[string]string{"channel_id": channel_id, "payment_source_id": "123"}
  66. jsonValue, _ := json.Marshal(values)
  67. req, err := http.NewRequest("POST", "https://discordapp.com/api/v6/entitlements/gift-codes/"+code+"/redeem", bytes.NewBuffer(jsonValue))
  68. req.Header.Add("content-type", "application/json")
  69. req.Header.Add("Authorization", Token)
  70. resp, err := client.Do(req)
  71. defer resp.Body.Close()
  72.  
  73. //bodyBytes, err := ioutil.ReadAll(resp.Body)
  74. if err != nil {
  75. log.Fatal(err)
  76. }
  77. //bodyString := string(bodyBytes)
  78. //fmt.Println(bodyString)
  79. switch status := resp.StatusCode; status {
  80. case 200:
  81. color.Success.Println("Redeemed Nitro: " + code)
  82. case 404:
  83. color.Danger.Println("Invalid Code: " + code)
  84. case 400:
  85. color.Danger.Println("Invalid Code: " + code)
  86. }
  87. Redeemed = append(Redeemed, code)
  88. }
  89.  
  90. func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
  91.  
  92. if m.Author.ID == s.State.User.ID {
  93. return
  94. }
  95.  
  96. match1, _ := regexp.MatchString("(?:https?:)?discord(?:app.com/gifts/|.gift/)([^\\s]+)", m.Content)
  97. if match1 == true {
  98. re := regexp.MustCompile("(?:https?:)?discord(?:app.com/gifts/|.gift/)([^\\s]+)")
  99. match := re.FindStringSubmatch(m.Content)
  100. code := match[1]
  101. //fmt.println(m.channelID)
  102. _, found := Find(Redeemed, code)
  103. if !found && len(code) == 16 || len(code) == 24 {
  104. redeem_code(code, m.ChannelID)
  105. } else {
  106. fmt.Println(code, "- Already Attempted or Invalid Format")
  107. }
  108. }
  109. }
  110. func Find(slice []string, val string) (int, bool) {
  111. for i, item := range slice {
  112. if item == val {
  113. return i, true
  114. }
  115. }
  116. return -1, false
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement