main.go aktualisiert
All checks were successful
release-tag / release-image (push) Successful in 1m44s
All checks were successful
release-tag / release-image (push) Successful in 1m44s
This commit is contained in:
129
main.go
129
main.go
@@ -427,68 +427,128 @@ func onInteractionCreate(_ string) func(s *discordgo.Session, i *discordgo.Inter
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: msg, Flags: discordgo.MessageFlagsEphemeral}})
|
||||
|
||||
case "setlobby":
|
||||
// Admin-Check zuerst
|
||||
if !isGuildAdmin(s, guildID, i.User, i.Member) {
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "❌ Nur Administratoren dürfen das.", Flags: discordgo.MessageFlagsEphemeral}})
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "❌ Nur Administratoren dürfen das.",
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Option "name" lesen
|
||||
var name string
|
||||
for _, o := range data.Options {
|
||||
if o.Name == "name" {
|
||||
name = o.StringValue()
|
||||
break
|
||||
}
|
||||
}
|
||||
if name == "" {
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "Bitte gib einen Namen an.", Flags: discordgo.MessageFlagsEphemeral}})
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "Bitte gib einen Namen an.",
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// speichern
|
||||
cfgMu.Lock()
|
||||
getCfg(guildID).LobbyName = name
|
||||
cfgMu.Unlock()
|
||||
if err := saveGuildCfgs(); err != nil {
|
||||
log.Printf("Speichern fehlgeschlagen: %v", err)
|
||||
}
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "✅ Lobby-Name aktualisiert auf: " + name, Flags: discordgo.MessageFlagsEphemeral}})
|
||||
|
||||
case "setcategory":
|
||||
if !isGuildAdmin(s, guildID, i.User, i.Member) {
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "❌ Nur Administratoren dürfen das.", Flags: discordgo.MessageFlagsEphemeral}})
|
||||
log.Printf("saveGuildCfgs failed: %v", err)
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "⚠️ Lobby-Name gesetzt, aber Speichern fehlgeschlagen. Schau die Logs.",
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Antwort <= 3s
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "✅ Lobby-Name aktualisiert auf: " + name,
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
|
||||
case "setcategory":
|
||||
// Admin-Check zuerst
|
||||
if !isGuildAdmin(s, guildID, i.User, i.Member) {
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "❌ Nur Administratoren dürfen das.",
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Option "name" lesen
|
||||
var name string
|
||||
for _, o := range data.Options {
|
||||
if o.Name == "name" {
|
||||
name = o.StringValue()
|
||||
break
|
||||
}
|
||||
}
|
||||
if name == "" {
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "Bitte gib einen Namen an.", Flags: discordgo.MessageFlagsEphemeral}})
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "Bitte gib einen Namen an.",
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// speichern
|
||||
cfgMu.Lock()
|
||||
getCfg(guildID).CategoryName = name
|
||||
cfgMu.Unlock()
|
||||
if err := saveGuildCfgs(); err != nil {
|
||||
log.Printf("Speichern fehlgeschlagen: %v", err)
|
||||
}
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "✅ Kategorie-Name aktualisiert auf: " + name, Flags: discordgo.MessageFlagsEphemeral}})
|
||||
|
||||
case "settimeout":
|
||||
// Log + schneller ACK
|
||||
log.Printf("[settimeout] guild=%s user=%s", guildID, i.Member.User.ID)
|
||||
if err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseDeferredChannelMessageWithSource,
|
||||
log.Printf("saveGuildCfgs failed: %v", err)
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "⚠️ Kategorie-Name gesetzt, aber Speichern fehlgeschlagen. Schau die Logs.",
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
}); err != nil {
|
||||
log.Printf("Defer failed: %v", err)
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Admin-Check
|
||||
// Antwort <= 3s
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "✅ Kategorie-Name aktualisiert auf: " + name,
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
|
||||
case "settimeout":
|
||||
// Admin-Check zuerst
|
||||
if !isGuildAdmin(s, guildID, i.User, i.Member) {
|
||||
_, _ = s.FollowupMessageCreate(i.AppID, i.Token, true, &discordgo.WebhookParams{
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "❌ Nur Administratoren dürfen das.",
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
@@ -496,9 +556,13 @@ func onInteractionCreate(_ string) func(s *discordgo.Session, i *discordgo.Inter
|
||||
// minutes lesen
|
||||
minutes := int64(getCfg(guildID).TimeoutMin)
|
||||
for _, o := range data.Options {
|
||||
if o.Name == "minutes" { minutes = o.IntValue() }
|
||||
if o.Name == "minutes" {
|
||||
minutes = o.IntValue()
|
||||
}
|
||||
}
|
||||
if minutes < 1 {
|
||||
minutes = 1
|
||||
}
|
||||
if minutes < 1 { minutes = 1 }
|
||||
|
||||
// speichern
|
||||
cfgMu.Lock()
|
||||
@@ -506,16 +570,25 @@ func onInteractionCreate(_ string) func(s *discordgo.Session, i *discordgo.Inter
|
||||
cfgMu.Unlock()
|
||||
if err := saveGuildCfgs(); err != nil {
|
||||
log.Printf("saveGuildCfgs failed: %v", err)
|
||||
_, _ = s.FollowupMessageCreate(i.AppID, i.Token, true, &discordgo.WebhookParams{
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "⚠️ Timeout gesetzt, aber Speichern fehlgeschlagen. Schau die Logs.",
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// final reply
|
||||
_, _ = s.FollowupMessageCreate(i.AppID, i.Token, true, &discordgo.WebhookParams{
|
||||
// Antwort <= 3s
|
||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: fmt.Sprintf("✅ Timeout auf %d Minuten gesetzt.", minutes),
|
||||
Flags: discordgo.MessageFlagsEphemeral,
|
||||
},
|
||||
})
|
||||
|
||||
case "adduser":
|
||||
// wer ruft auf?
|
||||
requester := i.User
|
||||
|
Reference in New Issue
Block a user