simplify candy claiming code

This commit is contained in:
skeletable 2022-09-29 15:40:31 +02:00
parent ec66a65c94
commit 53a5100aa6
1 changed files with 61 additions and 82 deletions

143
main.go
View File

@ -640,7 +640,7 @@ func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Content == "🍬 ***Some candy has appeared! React to this message to claim it.*** 🍬" {
s.MessageReactionAdd(m.ChannelID, m.Reference().MessageID, "🍬")
}
tickrate = 250 * time.Millisecond
tickrate = 100 * time.Millisecond
claimed = false
for i := 0; i < 720; i++ {
reactions, err := s.MessageReactions(m.ChannelID, m.Reference().MessageID, "🍬", 2, "", "")
@ -649,90 +649,69 @@ func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
i -= 1
continue
}
if len(reactions) <= 1 {
if len(reactions) == 0 {
continue
}
if reactions[0].ID == s.State.User.ID {
time.Sleep(tickrate)
if tickrate < maxtickrate && i % 5 == 0 {
tickrate += 20 * time.Millisecond
}
continue
}
var candyvalue int
bufftype := "none"
buffvalue := 0
var candystr string
switch m.Embeds[0].Footer.Text {
case "candyMilky":
candyvalue = 500
bufftype = "tewi"
case "candyMeta":
candyvalue = 1000
case "candyCaptain":
candyvalue = 250
case "candyRadmeal":
candyvalue = -200
case "candyXorcon":
candyvalue = 50
bufftype = "alpha"
buffvalue = 1
case "candyKornflake":
candyvalue = 200
case "candyKiko":
candyvalue = 500
default:
candyvalue = 100
}
maxcandy, _ := topUserCandy()
multiplier := "(1x)"
if checkUserCandy(reactions[0].ID) < (maxcandy/4) {
multiplier = "(4x)"
candyvalue = candyvalue * 4
} else if checkUserCandy(reactions[0].ID) < (maxcandy/2) {
multiplier = "(2x)"
candyvalue = candyvalue * 2
}
if !math.Signbit(float64(candyvalue)) {
candystr = "+" + fmt.Sprint(candyvalue)
} else { candystr = fmt.Sprint(candyvalue) }
msg := reactions[0].Username + " has claimed the candy! (" + candystr + " 🍬) " + multiplier
switch bufftype {
case "tewi":
msg += "\n*Good luck!* Global candy droprate temporarily increased!"
case "alpha":
msg += "\n*Bash!* Crit chance permanently increased!"
}
if !checkUser(reactions[0].ID) {
addUser(reactions[0].ID, candyvalue, buffvalue)
} else {
blocked := false
blockfile, err := ioutil.ReadFile("blocklist.txt")
if err != nil {
fmt.Println(err.Error())
}
blocklist := strings.Split(string(blockfile), "\n")
for _, j := range blocklist {
if j == reactions[0].ID && reactions[0].ID != "228911057316347905" {
blocked = true
s.MessageReactionRemove(m.ChannelID, m.Reference().MessageID, "🍬", j)
s.ChannelMessageSend(m.ChannelID, "1 blocked reaction")
i -= 1
k := 0
reactions = append(reactions[:k], reactions[k+1:]...)
blocked = false
}
}
if reactions[0].ID == s.State.User.ID {
continue
}
if blocked == false {
var candyvalue int
bufftype := "none"
buffvalue := 0
var candystr string
switch m.Embeds[0].Footer.Text {
case "candyMilky":
candyvalue = 500
bufftype = "tewi"
case "candyMeta":
candyvalue = 1000
case "candyCaptain":
candyvalue = 250
case "candyRadmeal":
candyvalue = -200
case "candyXorcon":
candyvalue = 50
bufftype = "alpha"
buffvalue = 1
case "candyKornflake":
candyvalue = 200
case "candyKiko":
candyvalue = 500
default:
candyvalue = 100
}
maxcandy, _ := topUserCandy()
multiplier := "(1x)"
if checkUserCandy(reactions[0].ID) < (maxcandy/4) {
multiplier = "(4x)"
candyvalue = candyvalue * 4
} else if checkUserCandy(reactions[0].ID) < (maxcandy/2) {
multiplier = "(2x)"
candyvalue = candyvalue * 2
}
if !math.Signbit(float64(candyvalue)) {
candystr = "+" + fmt.Sprint(candyvalue)
} else { candystr = fmt.Sprint(candyvalue) }
msg := reactions[0].Username + " has claimed the candy! (" + candystr + " 🍬) " + multiplier
switch bufftype {
case "tewi":
msg += "\n*Good luck!* Global candy droprate temporarily increased!"
case "alpha":
msg += "\n*Bash!* Crit chance permanently increased!"
}
if !checkUser(reactions[0].ID) {
addUser(reactions[0].ID, candyvalue, buffvalue)
} else {
addCandy(reactions[0].ID, candyvalue)
addBuff(reactions[0].ID, buffvalue)
}
s.ChannelMessageSend(m.ChannelID, msg)
s.ChannelMessageSend(m.ChannelID, "`DEBUG: " + fmt.Sprint(tickrate) + "`")
claimed = true
}
if claimed { break }
}
time.Sleep(tickrate)
if tickrate < maxtickrate {
tickrate += 10 * time.Millisecond
addCandy(reactions[0].ID, candyvalue)
addBuff(reactions[0].ID, buffvalue)
}
s.ChannelMessageSend(m.ChannelID, msg)
s.ChannelMessageSend(m.ChannelID, "`DEBUG: " + fmt.Sprint(tickrate) + "`")
claimed = true
if claimed { break }
}
return