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:
141
main.go
141
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}})
|
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: msg, Flags: discordgo.MessageFlagsEphemeral}})
|
||||||
|
|
||||||
case "setlobby":
|
case "setlobby":
|
||||||
|
// Admin-Check zuerst
|
||||||
if !isGuildAdmin(s, guildID, i.User, i.Member) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Option "name" lesen
|
||||||
var name string
|
var name string
|
||||||
for _, o := range data.Options {
|
for _, o := range data.Options {
|
||||||
if o.Name == "name" {
|
if o.Name == "name" {
|
||||||
name = o.StringValue()
|
name = o.StringValue()
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if name == "" {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// speichern
|
||||||
cfgMu.Lock()
|
cfgMu.Lock()
|
||||||
getCfg(guildID).LobbyName = name
|
getCfg(guildID).LobbyName = name
|
||||||
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.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "✅ Lobby-Name aktualisiert auf: " + name, Flags: discordgo.MessageFlagsEphemeral}})
|
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||||
|
Data: &discordgo.InteractionResponseData{
|
||||||
case "setcategory":
|
Content: "⚠️ Lobby-Name gesetzt, aber Speichern fehlgeschlagen. Schau die Logs.",
|
||||||
if !isGuildAdmin(s, guildID, i.User, i.Member) {
|
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
|
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
|
var name string
|
||||||
for _, o := range data.Options {
|
for _, o := range data.Options {
|
||||||
if o.Name == "name" {
|
if o.Name == "name" {
|
||||||
name = o.StringValue()
|
name = o.StringValue()
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if name == "" {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// speichern
|
||||||
cfgMu.Lock()
|
cfgMu.Lock()
|
||||||
getCfg(guildID).CategoryName = name
|
getCfg(guildID).CategoryName = name
|
||||||
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.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||||
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{Content: "✅ Kategorie-Name aktualisiert auf: " + name, Flags: discordgo.MessageFlagsEphemeral}})
|
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||||
|
Data: &discordgo.InteractionResponseData{
|
||||||
case "settimeout":
|
Content: "⚠️ Kategorie-Name gesetzt, aber Speichern fehlgeschlagen. Schau die Logs.",
|
||||||
// Log + schneller ACK
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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) {
|
if !isGuildAdmin(s, guildID, i.User, i.Member) {
|
||||||
_, _ = s.FollowupMessageCreate(i.AppID, i.Token, true, &discordgo.WebhookParams{
|
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||||
Content: "❌ Nur Administratoren dürfen das.",
|
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||||
|
Data: &discordgo.InteractionResponseData{
|
||||||
|
Content: "❌ Nur Administratoren dürfen das.",
|
||||||
|
Flags: discordgo.MessageFlagsEphemeral,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -496,9 +556,13 @@ func onInteractionCreate(_ string) func(s *discordgo.Session, i *discordgo.Inter
|
|||||||
// minutes lesen
|
// minutes lesen
|
||||||
minutes := int64(getCfg(guildID).TimeoutMin)
|
minutes := int64(getCfg(guildID).TimeoutMin)
|
||||||
for _, o := range data.Options {
|
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
|
// speichern
|
||||||
cfgMu.Lock()
|
cfgMu.Lock()
|
||||||
@@ -506,16 +570,25 @@ func onInteractionCreate(_ string) func(s *discordgo.Session, i *discordgo.Inter
|
|||||||
cfgMu.Unlock()
|
cfgMu.Unlock()
|
||||||
if err := saveGuildCfgs(); err != nil {
|
if err := saveGuildCfgs(); err != nil {
|
||||||
log.Printf("saveGuildCfgs failed: %v", err)
|
log.Printf("saveGuildCfgs failed: %v", err)
|
||||||
_, _ = s.FollowupMessageCreate(i.AppID, i.Token, true, &discordgo.WebhookParams{
|
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||||
Content: "⚠️ Timeout gesetzt, aber Speichern fehlgeschlagen. Schau die Logs.",
|
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||||
|
Data: &discordgo.InteractionResponseData{
|
||||||
|
Content: "⚠️ Timeout gesetzt, aber Speichern fehlgeschlagen. Schau die Logs.",
|
||||||
|
Flags: discordgo.MessageFlagsEphemeral,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// final reply
|
// Antwort <= 3s
|
||||||
_, _ = s.FollowupMessageCreate(i.AppID, i.Token, true, &discordgo.WebhookParams{
|
_ = s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||||
Content: fmt.Sprintf("✅ Timeout auf %d Minuten gesetzt.", minutes),
|
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||||
|
Data: &discordgo.InteractionResponseData{
|
||||||
|
Content: fmt.Sprintf("✅ Timeout auf %d Minuten gesetzt.", minutes),
|
||||||
|
Flags: discordgo.MessageFlagsEphemeral,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
case "adduser":
|
case "adduser":
|
||||||
// wer ruft auf?
|
// wer ruft auf?
|
||||||
requester := i.User
|
requester := i.User
|
||||||
|
Reference in New Issue
Block a user