1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2024-12-23 01:20:11 +00:00

discord: register available profiles for /inv

profiles are registered as options for /inv as startup. Note in
description added to restart jfa-go to reload them.
This commit is contained in:
Harvey Tindall 2023-10-10 15:15:25 +01:00
parent 10a32ad1ae
commit 62923d5e45
Signed by: hrfee
GPG Key ID: BBC65952848FB1A2

View File

@ -349,13 +349,13 @@ func (d *DiscordDaemon) registerCommands() {
{ {
Type: dg.ApplicationCommandOptionUser, Type: dg.ApplicationCommandOptionUser,
Name: "user", Name: "user",
Description: "User to Invite", Description: "User to Invite.",
Required: true, Required: true,
}, },
{ {
Type: dg.ApplicationCommandOptionInteger, Type: dg.ApplicationCommandOptionInteger,
Name: "expiry", Name: "expiry",
Description: "Time in minutes before expiration", Description: "Time in minutes before expiration.",
Required: false, Required: false,
}, },
/* Label should be automatically set to something like "Discord invite for @username" /* Label should be automatically set to something like "Discord invite for @username"
@ -368,13 +368,13 @@ func (d *DiscordDaemon) registerCommands() {
{ {
Type: dg.ApplicationCommandOptionString, Type: dg.ApplicationCommandOptionString,
Name: "user_label", Name: "user_label",
Description: "Label given to users created with this invite", Description: "Label given to users created with this invite.",
Required: false, Required: false,
}, },
{ {
Type: dg.ApplicationCommandOptionString, Type: dg.ApplicationCommandOptionString,
Name: "profile", Name: "profile",
Description: "Profile to apply to the user created with this invite", Description: "Profile to apply. Restart jfa-go if there's any missing.",
Required: false, Required: false,
}, },
}, },
@ -383,7 +383,7 @@ func (d *DiscordDaemon) registerCommands() {
commands[1].Options[0].Choices = make([]*dg.ApplicationCommandOptionChoice, len(d.app.storage.lang.Telegram)) commands[1].Options[0].Choices = make([]*dg.ApplicationCommandOptionChoice, len(d.app.storage.lang.Telegram))
i := 0 i := 0
for code := range d.app.storage.lang.Telegram { for code := range d.app.storage.lang.Telegram {
d.app.debug.Printf("Registering choice \"%s\":\"%s\"\n", d.app.storage.lang.Telegram[code].Meta.Name, code) d.app.debug.Printf("Discord: registering lang choice \"%s\":\"%s\"\n", d.app.storage.lang.Telegram[code].Meta.Name, code)
commands[1].Options[0].Choices[i] = &dg.ApplicationCommandOptionChoice{ commands[1].Options[0].Choices[i] = &dg.ApplicationCommandOptionChoice{
Name: d.app.storage.lang.Telegram[code].Meta.Name, Name: d.app.storage.lang.Telegram[code].Meta.Name,
Value: code, Value: code,
@ -391,6 +391,17 @@ func (d *DiscordDaemon) registerCommands() {
i++ i++
} }
// FIXME: Maybe make this reload when profiles change
profiles := d.app.storage.GetProfiles()
commands[3].Options[3].Choices = make([]*dg.ApplicationCommandOptionChoice, len(profiles))
for i, profile := range profiles {
d.app.debug.Printf("Discord: registering profile choice \"%s\"", profile.Name)
commands[3].Options[3].Choices[i] = &dg.ApplicationCommandOptionChoice{
Name: profile.Name,
Value: profile.Name,
}
}
// d.deregisterCommands() // d.deregisterCommands()
d.commandIDs = make([]string, len(commands)) d.commandIDs = make([]string, len(commands))
@ -416,7 +427,7 @@ func (d *DiscordDaemon) deregisterCommands() {
return return
} }
for _, cmd := range existingCommands { for _, cmd := range existingCommands {
if err := d.bot.ApplicationCommandDelete(d.bot.State.User.ID, "", cmd.ID); err != nil { if err := d.bot.ApplicationCommandDelete(d.bot.State.User.ID, d.guildID, cmd.ID); err != nil {
d.app.err.Printf("Failed to deregister command: %v", err) d.app.err.Printf("Failed to deregister command: %v", err)
} }
} }
@ -602,7 +613,7 @@ func (d *DiscordDaemon) cmdInvite(s *dg.Session, i *dg.InteractionCreate, lang s
ValidTill: validTill, ValidTill: validTill,
UserLabel: userLabel, UserLabel: userLabel,
Profile: "Default", Profile: "Default",
Label: fmt.Sprintf("Discord Invite for %s", RenderDiscordUsername(recipient)), Label: fmt.Sprintf("Discord: %s", RenderDiscordUsername(recipient)),
} }
if profileName != "" { if profileName != "" {
if _, ok := d.app.storage.GetProfileKey(profileName); ok { if _, ok := d.app.storage.GetProfileKey(profileName); ok {