This commit is contained in:
45
main.go
45
main.go
@@ -473,26 +473,49 @@ func onInteractionCreate(_ string) func(s *discordgo.Session, i *discordgo.Inter
|
|||||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "✅ Kategorie-Name aktualisiert auf: " + name, Flags: discordgo.MessageFlagsEphemeral}})
|
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "✅ Kategorie-Name aktualisiert auf: " + name, Flags: discordgo.MessageFlagsEphemeral}})
|
||||||
|
|
||||||
case "settimeout":
|
case "settimeout":
|
||||||
if !isGuildAdmin(s, guildID, i.User, i.Member) {
|
// Log + schneller ACK
|
||||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "❌ Nur Administratoren dürfen das.", Flags: discordgo.MessageFlagsEphemeral}})
|
log.Printf("[settimeout] guild=%s user=%s", guildID, i.Member.User.ID)
|
||||||
|
if err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||||
|
Type: discordgo.InteractionResponseDeferredChannelMessageWithSource,
|
||||||
|
Data: &discordgo.InteractionResponseData{
|
||||||
|
Flags: discordgo.MessageFlagsEphemeral,
|
||||||
|
},
|
||||||
|
}); err != nil {
|
||||||
|
log.Printf("Defer failed: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var minutes int64 = int64(getCfg(guildID).TimeoutMin)
|
|
||||||
|
// Admin-Check
|
||||||
|
if !isGuildAdmin(s, guildID, i.User, i.Member) {
|
||||||
|
_, _ = s.FollowupMessageCreate(i.AppID, i.Token, true, &discordgo.WebhookParams{
|
||||||
|
Content: "❌ Nur Administratoren dürfen das.",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// minutes lesen
|
||||||
|
minutes := int64(getCfg(guildID).TimeoutMin)
|
||||||
for _, o := range data.Options {
|
for _, o := range data.Options {
|
||||||
if o.Name == "minutes" {
|
if o.Name == "minutes" { minutes = o.IntValue() }
|
||||||
minutes = o.IntValue()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if minutes < 1 {
|
|
||||||
minutes = 1
|
|
||||||
}
|
}
|
||||||
|
if minutes < 1 { minutes = 1 }
|
||||||
|
|
||||||
|
// speichern
|
||||||
cfgMu.Lock()
|
cfgMu.Lock()
|
||||||
getCfg(guildID).TimeoutMin = int(minutes)
|
getCfg(guildID).TimeoutMin = int(minutes)
|
||||||
cfgMu.Unlock()
|
cfgMu.Unlock()
|
||||||
if err := saveGuildCfgs(); err != nil {
|
if err := saveGuildCfgs(); err != nil {
|
||||||
log.Printf("Speichern fehlgeschlagen: %v", err)
|
log.Printf("saveGuildCfgs failed: %v", err)
|
||||||
|
_, _ = s.FollowupMessageCreate(i.AppID, i.Token, true, &discordgo.WebhookParams{
|
||||||
|
Content: "⚠️ Timeout gesetzt, aber Speichern fehlgeschlagen. Schau die Logs.",
|
||||||
|
})
|
||||||
|
return
|
||||||
}
|
}
|
||||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: fmt.Sprintf("✅ Timeout auf %d Minuten gesetzt.", minutes), Flags: discordgo.MessageFlagsEphemeral}})
|
|
||||||
|
// final reply
|
||||||
|
_, _ = s.FollowupMessageCreate(i.AppID, i.Token, true, &discordgo.WebhookParams{
|
||||||
|
Content: fmt.Sprintf("✅ Timeout auf %d Minuten gesetzt.", minutes),
|
||||||
|
})
|
||||||
case "adduser":
|
case "adduser":
|
||||||
// wer ruft auf?
|
// wer ruft auf?
|
||||||
requester := i.User
|
requester := i.User
|
||||||
|
Reference in New Issue
Block a user