From ee0a192da55e898955ff4abb1eb21ce4c7779ec4 Mon Sep 17 00:00:00 2001 From: Simon Kim Date: Wed, 21 Oct 2026 02:01:58 -0700 Subject: [PATCH] Adding morgul-blade feature --- README.md | 4 +- cmd/frodo-bot/main.go | 8 +-- internal/bot/assets/morgul-blade.png | Bin 0 -> 75444 bytes internal/bot/bot.go | 13 +++- internal/bot/{secret.go => messagehandler.go} | 5 ++ internal/bot/morgulblade.go | 61 ++++++++++++++++++ internal/wound/wound.go | 38 +++++++++++ 7 files changed, 123 insertions(+), 6 deletions(-) create mode 100755 internal/bot/assets/morgul-blade.png rename internal/bot/{secret.go => messagehandler.go} (82%) create mode 100644 internal/bot/morgulblade.go create mode 100644 internal/wound/wound.go diff --git a/README.md b/README.md index 726b573..6b7cc9b 100755 --- a/README.md +++ b/README.md @@ -30,7 +30,9 @@ go run ./cmd/frodo-bot ### 3. Supported Commands -nothing yet +| Command | Description | +| ------------- | ------------------------------------------------------------------- | +| /morgul-blade | Stab Frodo with the cursed Morgul blade to silence him indefinitely | Press `Ctrl+C` to stop. diff --git a/cmd/frodo-bot/main.go b/cmd/frodo-bot/main.go index b94b6d0..c315001 100644 --- a/cmd/frodo-bot/main.go +++ b/cmd/frodo-bot/main.go @@ -24,22 +24,22 @@ func run() error { return fmt.Errorf("config failed: %w", err) } - discord, err := discordgo.New("Bot " + cfg.Token) + session, err := discordgo.New("Bot " + cfg.Token) if err != nil { return fmt.Errorf("bot failed to init: %w", err) } b := bot.New(cfg) - b.Register(discord) + b.Register(session) // open session - err = discord.Open() + err = session.Open() if err != nil { return fmt.Errorf("failed to open discord session: %w", err) } // executes after run returns - defer discord.Close() + defer session.Close() fmt.Println("bot is running") c := make(chan os.Signal, 1) diff --git a/internal/bot/assets/morgul-blade.png b/internal/bot/assets/morgul-blade.png new file mode 100755 index 0000000000000000000000000000000000000000..088ab9c925d0a41df5e9dd4f186b6a212febe6c0 GIT binary patch literal 75444 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 m%AjDX|Q&2w2(8?PkeV?pHbJShiB(YA1ar?gN( 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%0Dfl1+ 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 literal 0 HcmV?d00001 diff --git a/internal/bot/bot.go b/internal/bot/bot.go index 3b61bf6..392e68a 100644 --- a/internal/bot/bot.go +++ b/internal/bot/bot.go @@ -4,24 +4,35 @@ import ( "log" "github.com/SimonKimDev/frodo-bot/internal/config" + "github.com/SimonKimDev/frodo-bot/internal/wound" "github.com/bwmarrin/discordgo" ) type Bot struct { gifURL string + wounds *wound.Tracker } func New(cfg config.Config) *Bot { - return &Bot{gifURL: cfg.GIFURL} + return &Bot{ + wounds: wound.New(), + gifURL: cfg.GIFURL, + } } +// Register adds the bot's event handlers and intents to the current Session. +// Should be called before calling session.Open func (b *Bot) Register(s *discordgo.Session) { s.AddHandler(b.onReady) s.AddHandler(b.onMessage) + s.AddHandler(b.onInteraction) s.Identify.Intents = discordgo.IntentsMessageContent | discordgo.IntentsGuildMessages } func (b *Bot) onReady(s *discordgo.Session, r *discordgo.Ready) { user := r.User log.Printf("logged in as %v", user.Username) + if _, err := s.ApplicationCommandCreate(user.ID, "", morgulBladeCommand()); err != nil { + log.Printf("failed to create command %v", err) + } } diff --git a/internal/bot/secret.go b/internal/bot/messagehandler.go similarity index 82% rename from internal/bot/secret.go rename to internal/bot/messagehandler.go index af532e5..719fb58 100644 --- a/internal/bot/secret.go +++ b/internal/bot/messagehandler.go @@ -12,6 +12,10 @@ func (b *Bot) onMessage(s *discordgo.Session, m *discordgo.MessageCreate) { return } + if b.wounds.IsStabbed(m.GuildID) { + return + } + if !shouldReply(m.Content) { return } @@ -21,6 +25,7 @@ func (b *Bot) onMessage(s *discordgo.Session, m *discordgo.MessageCreate) { } } +// shouldReply reports whether to post the meme or not. func shouldReply(content string) bool { return strings.Contains(strings.ToLower(content), "secret") } diff --git a/internal/bot/morgulblade.go b/internal/bot/morgulblade.go new file mode 100644 index 0000000..df4200d --- /dev/null +++ b/internal/bot/morgulblade.go @@ -0,0 +1,61 @@ +package bot + +import ( + "bytes" + _ "embed" + "log" + + "github.com/bwmarrin/discordgo" +) + +const morgulBladeCmd = "morgul-blade" + +//go:embed assets/morgul-blade.png +var morgulBladePNG []byte + +func morgulBladeCommand() *discordgo.ApplicationCommand { + return &discordgo.ApplicationCommand{ + Name: morgulBladeCmd, + Description: "Stabs Frodo with the Morgul Blade to silence him indefinitely", + Contexts: &[]discordgo.InteractionContextType{discordgo.InteractionContextGuild}, + } +} + +func (b *Bot) onInteraction(s *discordgo.Session, i *discordgo.InteractionCreate) { + if i.Type != discordgo.InteractionApplicationCommand { + return + } + + if i.ApplicationCommandData().Name != morgulBladeCmd { + return + } + + if !b.wounds.Stab(i.GuildID) { + respond(s, i, &discordgo.InteractionResponseData{ + Content: "You awful person, Frodo has already been stabbed.", + Flags: discordgo.MessageFlagsEphemeral, + }) + return + } + + respond(s, i, &discordgo.InteractionResponseData{ + Content: "DEUUEAUGH!!", + Files: []*discordgo.File{ + { + Name: "morgul-blade.png", + ContentType: "image/png", + Reader: bytes.NewReader(morgulBladePNG), + }, + }, + }) +} + +func respond(s *discordgo.Session, i *discordgo.InteractionCreate, data *discordgo.InteractionResponseData) { + err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ + Type: discordgo.InteractionResponseChannelMessageWithSource, + Data: data, + }) + if err != nil { + log.Printf("respond to /%s: %v", i.ApplicationCommandData().Name, err) + } +} diff --git a/internal/wound/wound.go b/internal/wound/wound.go new file mode 100644 index 0000000..115dd6f --- /dev/null +++ b/internal/wound/wound.go @@ -0,0 +1,38 @@ +package wound + +import ( + "sync" +) + +// Tracker records which server (guild) have Frodo stabbed. Monsters... +// It's safe for concurrent use. +type Tracker struct { + mu sync.Mutex + stabbed map[string]bool +} + +func New() *Tracker { + return &Tracker{stabbed: make(map[string]bool)} +} + +// Stab marks guildID as stabbed return false if already stabbed +// Because it wouldn't make sense to stab Frodo multiple times. +// Come on, he's already wounded. +func (t *Tracker) Stab(guildID string) bool { + t.mu.Lock() + defer t.mu.Unlock() + + if t.stabbed[guildID] { + return false + } + + t.stabbed[guildID] = true + return true +} + +// IsStabbed reports whether Frodo was already stabbed or not +func (t *Tracker) IsStabbed(guildID string) bool { + t.mu.Lock() + defer t.mu.Unlock() + return t.stabbed[guildID] +}