2024-05-03 21:25:42 +02:00
|
|
|
package handlers
|
2024-05-03 18:07:31 +02:00
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/bwmarrin/discordgo"
|
2024-05-03 21:25:42 +02:00
|
|
|
"kleincordBot/services"
|
2024-05-18 23:28:30 +02:00
|
|
|
"math"
|
2024-05-03 18:07:31 +02:00
|
|
|
"strconv"
|
2024-05-18 23:28:30 +02:00
|
|
|
"sync"
|
|
|
|
|
"time"
|
2024-05-03 18:07:31 +02:00
|
|
|
)
|
|
|
|
|
|
2024-05-03 21:25:42 +02:00
|
|
|
func DeleteCommand(data discordgo.ApplicationCommandInteractionData, s *discordgo.Session, i *discordgo.InteractionCreate) {
|
2024-05-18 23:28:30 +02:00
|
|
|
var messages []*discordgo.Message
|
|
|
|
|
var Allmessages []*discordgo.Message
|
|
|
|
|
var messagesToDelete []string
|
|
|
|
|
var wg sync.WaitGroup
|
|
|
|
|
var beforeID = ""
|
|
|
|
|
|
2024-05-03 18:07:31 +02:00
|
|
|
amount, _ := strconv.Atoi(data.Options[0].Value.(string))
|
2024-05-18 23:28:30 +02:00
|
|
|
modulo := amount % 20
|
|
|
|
|
|
|
|
|
|
loops := math.Floor(float64(amount-modulo) / 20)
|
|
|
|
|
|
|
|
|
|
err := s.InteractionRespond(
|
2024-05-03 18:07:31 +02:00
|
|
|
i.Interaction,
|
|
|
|
|
&discordgo.InteractionResponse{
|
2024-05-03 21:00:32 +02:00
|
|
|
Type: discordgo.InteractionResponseDeferredChannelMessageWithSource,
|
2024-05-03 18:07:31 +02:00
|
|
|
Data: &discordgo.InteractionResponseData{
|
2024-05-18 23:28:30 +02:00
|
|
|
Content: "deleting messages",
|
2024-05-03 18:07:31 +02:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
if err != nil {
|
|
|
|
|
}
|
2024-05-18 23:28:30 +02:00
|
|
|
|
|
|
|
|
for x := 0; x < int(loops); x++ {
|
|
|
|
|
messages, err = s.ChannelMessages(i.ChannelID, 20, beforeID, "", "")
|
|
|
|
|
if err != nil {
|
|
|
|
|
services.HandleError(err, s)
|
|
|
|
|
}
|
|
|
|
|
Allmessages = append(Allmessages, messages...)
|
|
|
|
|
if len(messages) > 0 {
|
|
|
|
|
beforeID = messages[len(messages)-1].ID
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if modulo > 0 {
|
|
|
|
|
messages, err = s.ChannelMessages(i.ChannelID, modulo, beforeID, "", "")
|
|
|
|
|
if err != nil {
|
|
|
|
|
services.HandleError(err, s)
|
|
|
|
|
}
|
|
|
|
|
Allmessages = append(Allmessages, messages...)
|
|
|
|
|
if len(messages) > 0 {
|
|
|
|
|
beforeID = messages[len(messages)-1].ID
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if time.Now().After(message.Timestamp.Add((24 * time.Hour) * 14)) {
|
2024-05-03 21:08:48 +02:00
|
|
|
s.ChannelMessageDelete(i.ChannelID, message.ID)
|
2024-05-18 23:28:30 +02:00
|
|
|
} else {
|
|
|
|
|
messagesToDelete = append(messagesToDelete, message.ID)
|
2024-05-03 21:08:48 +02:00
|
|
|
}
|
2024-05-18 23:28:30 +02:00
|
|
|
println(message.Content + " deleted")
|
2024-05-03 18:07:31 +02:00
|
|
|
}
|
2024-05-18 23:28:30 +02:00
|
|
|
wg.Done()
|
|
|
|
|
}(message, i, data, s)
|
2024-05-03 18:07:31 +02:00
|
|
|
}
|
2024-05-18 23:28:30 +02:00
|
|
|
wg.Wait()
|
|
|
|
|
err = s.ChannelMessagesBulkDelete(i.ChannelID, messagesToDelete)
|
|
|
|
|
if err != nil {
|
|
|
|
|
services.HandleError(err, s)
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-03 21:25:42 +02:00
|
|
|
_, err = s.FollowupMessageCreate(i.Interaction, true, &discordgo.WebhookParams{
|
2024-05-18 23:28:30 +02:00
|
|
|
Content: strconv.Itoa(len(Allmessages)) + " Message deleted",
|
2024-05-03 21:00:32 +02:00
|
|
|
})
|
2024-05-03 21:25:42 +02:00
|
|
|
if err != nil {
|
2024-05-03 22:05:35 +02:00
|
|
|
services.HandleError(err, s)
|
2024-05-03 21:25:42 +02:00
|
|
|
}
|
2024-05-03 18:07:31 +02:00
|
|
|
}
|