delete to infinite
This commit is contained in:
parent
a6b1a56378
commit
22d6d7e836
2
.github/workflows/deploy-docs.yml
vendored
2
.github/workflows/deploy-docs.yml
vendored
@ -3,10 +3,8 @@ name: build and deploy portfolio
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
paths: ['Writerside/**']
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
paths: ['Writerside/**']
|
||||
|
||||
jobs:
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ var Commands = []*discordgo.ApplicationCommand{
|
||||
{
|
||||
Type: discordgo.ApplicationCommandOptionString,
|
||||
Name: "amount",
|
||||
Description: "max 100",
|
||||
Description: "how many to delete",
|
||||
Required: true,
|
||||
},
|
||||
{
|
||||
|
||||
@ -3,48 +3,93 @@ package handlers
|
||||
import (
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"kleincordBot/services"
|
||||
"math"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
func DeleteCommand(data discordgo.ApplicationCommandInteractionData, s *discordgo.Session, i *discordgo.InteractionCreate) {
|
||||
var messages []*discordgo.Message
|
||||
var Allmessages []*discordgo.Message
|
||||
var messagesToDelete []string
|
||||
var wg sync.WaitGroup
|
||||
var beforeID = ""
|
||||
|
||||
amount, _ := strconv.Atoi(data.Options[0].Value.(string))
|
||||
if amount > 100 {
|
||||
amount = 100
|
||||
}
|
||||
messages, err := s.ChannelMessages(i.ChannelID, amount, "", "", "")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = s.InteractionRespond(
|
||||
modulo := amount % 20
|
||||
|
||||
loops := math.Floor(float64(amount-modulo) / 20)
|
||||
|
||||
err := s.InteractionRespond(
|
||||
i.Interaction,
|
||||
&discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseDeferredChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "deleting " + strconv.Itoa(len(messages)) + " messages",
|
||||
Content: "deleting messages",
|
||||
},
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
// Handle the error
|
||||
}
|
||||
for _, message := range messages {
|
||||
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 {
|
||||
s.ChannelMessageDelete(i.ChannelID, message.ID)
|
||||
println(message.Content + " deleted")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
s.ChannelMessageDelete(i.ChannelID, message.ID)
|
||||
println(message.Content + " deleted")
|
||||
|
||||
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)) {
|
||||
s.ChannelMessageDelete(i.ChannelID, message.ID)
|
||||
} else {
|
||||
messagesToDelete = append(messagesToDelete, message.ID)
|
||||
}
|
||||
println(message.Content + " deleted")
|
||||
}
|
||||
wg.Done()
|
||||
}(message, i, data, s)
|
||||
}
|
||||
wg.Wait()
|
||||
err = s.ChannelMessagesBulkDelete(i.ChannelID, messagesToDelete)
|
||||
if err != nil {
|
||||
services.HandleError(err, s)
|
||||
}
|
||||
|
||||
_, err = s.FollowupMessageCreate(i.Interaction, true, &discordgo.WebhookParams{
|
||||
Content: strconv.Itoa(len(messages)) + " Message deleted",
|
||||
Content: strconv.Itoa(len(Allmessages)) + " Message deleted",
|
||||
})
|
||||
if err != nil {
|
||||
services.HandleError(err, s)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user