horsebot: use a command option to decide whether ephemeral

This commit is contained in:
2026-03-09 12:35:39 -04:00
parent e08580925d
commit 2dd75edc03
2 changed files with 13 additions and 26 deletions

View File

@@ -65,8 +65,11 @@ func (s *skillServer) slash(data discord.SlashCommandInteractionData, e *handler
id = int64(v)
}
m := discord.MessageCreate{
Components: []discord.LayoutComponent{s.render(horse.SkillID(id), false)},
Flags: discord.MessageFlagIsComponentsV2 | discord.MessageFlagEphemeral,
Components: []discord.LayoutComponent{s.render(horse.SkillID(id))},
Flags: discord.MessageFlagIsComponentsV2,
}
if !data.Bool("share") {
m.Flags |= discord.MessageFlagEphemeral
}
return e.CreateMessage(m)
}
@@ -87,31 +90,15 @@ func (s *skillServer) button(data discord.ButtonInteractionData, e *handler.Comp
return e.CreateMessage(m)
}
m := discord.MessageUpdate{
Components: &[]discord.LayoutComponent{s.render(horse.SkillID(id), false)},
Components: &[]discord.LayoutComponent{s.render(horse.SkillID(id))},
}
return e.UpdateMessage(m)
}
func (s *skillServer) share(data discord.ButtonInteractionData, e *handler.ComponentEvent) error {
id, err := strconv.ParseInt(e.Vars["id"], 10, 32)
if err != nil {
m := discord.MessageCreate{
Content: "That button produced an invalid skill ID. That's not supposed to happen.",
Flags: discord.MessageFlagEphemeral,
}
return e.CreateMessage(m)
}
m := discord.MessageCreate{
Components: []discord.LayoutComponent{s.render(horse.SkillID(id), true)},
Flags: discord.MessageFlagIsComponentsV2,
}
return e.CreateMessage(m)
}
func (s *skillServer) render(id horse.SkillID, share bool) discord.ContainerComponent {
func (s *skillServer) render(id horse.SkillID) discord.ContainerComponent {
skill, ok := s.skills[id]
if !ok {
slog.Error("invalid skill id", slog.Int("id", int(id)), slog.Bool("share", share))
slog.Error("invalid skill id", slog.Int("id", int(id)))
return discord.NewContainer(discord.NewTextDisplayf("invalid skill ID %v made it to render", id))
}
@@ -198,7 +185,7 @@ func (s *skillServer) render(id horse.SkillID, share bool) discord.ContainerComp
rel = append(rel, s.skills[id])
}
}
if len(rel) > 1 || !share {
if len(rel) > 1 {
buttons := make([]discord.InteractiveComponent, 0, 4)
for _, rs := range rel {
b := discord.NewSecondaryButton(rs.Name, fmt.Sprintf("/skill/swap/%d", rs.ID))
@@ -207,9 +194,6 @@ func (s *skillServer) render(id horse.SkillID, share bool) discord.ContainerComp
}
buttons = append(buttons, b)
}
if !share {
buttons = append(buttons, discord.NewPrimaryButton("Share", fmt.Sprintf("/skill/share/%d", skill.ID)))
}
r.Components = append(r.Components, discord.NewActionRow(buttons...))
}
return r