diff --git a/handlers/deleteCommand.go b/handlers/deleteCommand.go index 0a1c38f..116f956 100644 --- a/handlers/deleteCommand.go +++ b/handlers/deleteCommand.go @@ -16,10 +16,12 @@ func DeleteCommand(data discordgo.ApplicationCommandInteractionData, s *discordg var wg sync.WaitGroup var beforeID = "" + OnlyWebhook, _ := strconv.ParseBool(data.Options[1].Value.(string)) amount, _ := strconv.Atoi(data.Options[0].Value.(string)) - modulo := amount % 20 + Webhooks, _ := s.ChannelWebhooks(i.ChannelID) + modulo := amount % 100 - loops := math.Floor(float64(amount-modulo) / 20) + loops := math.Floor(float64(amount-modulo) / 100) err := s.InteractionRespond( i.Interaction, @@ -34,7 +36,7 @@ func DeleteCommand(data discordgo.ApplicationCommandInteractionData, s *discordg } for x := 0; x < int(loops); x++ { - messages, err = s.ChannelMessages(i.ChannelID, 20, beforeID, "", "") + messages, err = s.ChannelMessages(i.ChannelID, 100, beforeID, "", "") if err != nil { services.HandleError(err, s) } @@ -56,36 +58,44 @@ func DeleteCommand(data discordgo.ApplicationCommandInteractionData, s *discordg for _, message := range Allmessages { wg.Add(1) - go func(message *discordgo.Message, i *discordgo.InteractionCreate, data discordgo.ApplicationCommandInteractionData, s *discordgo.Session) { - var Webhooks []*discordgo.Webhook - Webhooks, err = s.ChannelWebhooks(i.ChannelID) - OnlyWebhook, _ := strconv.ParseBool(data.Options[1].Value.(string)) - if OnlyWebhook { - for _, Webhook := range Webhooks { - if message.Author.ID == Webhook.ID { - if time.Now().After(message.Timestamp.Add((24 * time.Hour) * 14)) { - s.ChannelMessageDelete(i.ChannelID, message.ID) - } else { - messagesToDelete = append(messagesToDelete, message.ID) - } - println(message.Content + " deleted") + if OnlyWebhook { + for _, Webhook := range Webhooks { + if message.Author.ID == Webhook.ID { + if time.Now().After(message.Timestamp.Add((24 * time.Hour) * 14)) { + s.ChannelMessageDelete(i.ChannelID, message.ID) + } else { + messagesToDelete = append(messagesToDelete, message.ID) } } - } else { - if time.Now().After(message.Timestamp.Add((24 * time.Hour) * 14)) { - s.ChannelMessageDelete(i.ChannelID, message.ID) - } else { - messagesToDelete = append(messagesToDelete, message.ID) - } - println(message.Content + " deleted") } - wg.Done() - }(message, i, data, s) + } else { + if time.Now().After(message.Timestamp.Add((24 * time.Hour) * 14)) { + s.ChannelMessageDelete(i.ChannelID, message.ID) + } else { + messagesToDelete = append(messagesToDelete, message.ID) + } + } + wg.Done() } wg.Wait() - err = s.ChannelMessagesBulkDelete(i.ChannelID, messagesToDelete) - if err != nil { - services.HandleError(err, s) + + modulo = len(messagesToDelete) % 100 + + loops = math.Floor(float64(len(messagesToDelete)-modulo) / 100) + + for x := 0; x < int(loops); x++ { + index := x * 100 + err = s.ChannelMessagesBulkDelete(i.ChannelID, messagesToDelete[index:index+100]) + if err != nil { + services.HandleError(err, s) + } + } + if modulo > 0 { + index := int(loops) * 100 + err = s.ChannelMessagesBulkDelete(i.ChannelID, messagesToDelete[index:index+modulo]) + if err != nil { + services.HandleError(err, s) + } } _, err = s.FollowupMessageCreate(i.Interaction, true, &discordgo.WebhookParams{