|
|
|
|
@@ -2,6 +2,7 @@ package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"log/slog"
|
|
|
|
|
"strconv"
|
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
|
|
@@ -64,8 +65,8 @@ func (s *skillServer) slash(data discord.SlashCommandInteractionData, e *handler
|
|
|
|
|
id = int64(v)
|
|
|
|
|
}
|
|
|
|
|
m := discord.MessageCreate{
|
|
|
|
|
Components: []discord.LayoutComponent{s.render(horse.SkillID(id))},
|
|
|
|
|
Flags: discord.MessageFlagIsComponentsV2,
|
|
|
|
|
Components: []discord.LayoutComponent{s.render(horse.SkillID(id), false)},
|
|
|
|
|
Flags: discord.MessageFlagIsComponentsV2 | discord.MessageFlagEphemeral,
|
|
|
|
|
}
|
|
|
|
|
return e.CreateMessage(m)
|
|
|
|
|
}
|
|
|
|
|
@@ -86,15 +87,31 @@ 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))},
|
|
|
|
|
Components: &[]discord.LayoutComponent{s.render(horse.SkillID(id), false)},
|
|
|
|
|
}
|
|
|
|
|
return e.UpdateMessage(m)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *skillServer) render(id horse.SkillID) discord.ContainerComponent {
|
|
|
|
|
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)},
|
|
|
|
|
}
|
|
|
|
|
return e.CreateMessage(m)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *skillServer) render(id horse.SkillID, share bool) discord.ContainerComponent {
|
|
|
|
|
skill, ok := s.skills[id]
|
|
|
|
|
if !ok {
|
|
|
|
|
return discord.NewContainer(discord.NewTextDisplayf("invalid skill ID %v made it to RenderSkill", id))
|
|
|
|
|
slog.Error("invalid skill id", slog.Int("id", int(id)), slog.Bool("share", share))
|
|
|
|
|
return discord.NewContainer(discord.NewTextDisplayf("invalid skill ID %v made it to render", id))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
thumburl := fmt.Sprintf("https://gametora.com/images/umamusume/skill_icons/utx_ico_skill_%d.png", skill.IconID)
|
|
|
|
|
@@ -180,15 +197,18 @@ func (s *skillServer) render(id horse.SkillID) discord.ContainerComponent {
|
|
|
|
|
rel = append(rel, s.skills[id])
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if len(rel) > 1 {
|
|
|
|
|
if len(rel) > 1 || !share {
|
|
|
|
|
buttons := make([]discord.InteractiveComponent, 0, 4)
|
|
|
|
|
for _, rs := range rel {
|
|
|
|
|
b := discord.NewSecondaryButton(rs.Name, fmt.Sprintf("/skill/%d", rs.ID))
|
|
|
|
|
b := discord.NewSecondaryButton(rs.Name, fmt.Sprintf("/skill/swap/%d", rs.ID))
|
|
|
|
|
if rs.ID == id {
|
|
|
|
|
b = b.AsDisabled()
|
|
|
|
|
}
|
|
|
|
|
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
|
|
|
|
|
|