From 3f6a557e05f5963d31ced0301dfcea2ae9253d59 Mon Sep 17 00:00:00 2001 From: Cynthia Foxwell Date: Sat, 29 Jul 2023 22:29:55 -0600 Subject: [PATCH] typing, reactions --- commands/send.go | 2 ++ events/main.go | 1 + events/reactions.go | 56 +++++++++++++++++++++++++++++++++++++++++++++ lib/messages.go | 5 +++- main.go | 2 ++ 5 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 events/reactions.go diff --git a/commands/send.go b/commands/send.go index 0ba88ce..5870b21 100644 --- a/commands/send.go +++ b/commands/send.go @@ -68,6 +68,8 @@ func SendMode() { prompt = ansi.Color(prompt, "cyan+b") } + client.Typing(channel.ID) + lib.MakePrompt(prompt, true, func(input string, interrupt bool) { if input == "" { if interrupt { diff --git a/events/main.go b/events/main.go index bdd20ed..a006c57 100644 --- a/events/main.go +++ b/events/main.go @@ -8,5 +8,6 @@ func Setup(session *ningen.State) { session.PreHandler.AddHandler(Ready) session.PreHandler.AddHandler(MessageCreate) session.PreHandler.AddHandler(MessageUpdate) + session.PreHandler.AddHandler(ReactionAdd) SetupClock() } diff --git a/events/reactions.go b/events/reactions.go new file mode 100644 index 0000000..4624973 --- /dev/null +++ b/events/reactions.go @@ -0,0 +1,56 @@ +package events + +import ( + "fmt" + "time" + + "github.com/Cynosphere/comcord/lib" + "github.com/Cynosphere/comcord/state" + "github.com/diamondburned/arikawa/v3/discord" + "github.com/diamondburned/arikawa/v3/gateway" +) + +func ReactionAdd(event *gateway.MessageReactionAddEvent) { + client := state.GetClient() + currentChannel := state.GetCurrentChannel() + + if event.ChannelID.String() != currentChannel { + return + } + + emote := event.Emoji.Name + if event.Emoji.IsCustom() { + emote = ":" + emote + ":" + } + + now := time.Now() + nowSnowflake := discord.NewSnowflake(now) + + message, err := client.MessageStore.Message(event.ChannelID, event.MessageID) + if err != nil { + message, err = client.Message(event.ChannelID, event.MessageID) + if err != nil { + return + } + } + + msg := discord.Message{ + Content: fmt.Sprintf("*reacted with %s*", emote), + Author: event.Member.User, + ChannelID: event.ChannelID, + GuildID: event.GuildID, + ID: discord.MessageID(nowSnowflake), + ReferencedMessage: message, + Type: discord.InlinedReplyMessage, + Timestamp: discord.Timestamp(now), + } + + if state.IsInPrompt() { + state.AddMessageToQueue(msg) + } else { + lines := lib.ProcessMessage(msg, lib.MessageOptions{NoColor: state.HasNoColor()}) + for _, line := range lines { + fmt.Print(line) + } + } +} diff --git a/lib/messages.go b/lib/messages.go index 5527bf1..5140eee 100644 --- a/lib/messages.go +++ b/lib/messages.go @@ -301,7 +301,6 @@ func FormatMessage(options MessageOptions) []string { } } else { content := options.Content - content = ReplaceMarkdown(content, options.NoColor) if options.IsDM { name := fmt.Sprintf("*%s*", options.Name) @@ -309,6 +308,8 @@ func FormatMessage(options MessageOptions) []string { name = ansi.Color(name, "red+b") } + content = ReplaceMarkdown(content, options.NoColor) + lines = append(lines, fmt.Sprintf("%s %s\x07\n\r", name, content)) } else if utf8.RuneCountInString(content) > 1 && (strings.HasPrefix(content, "*") && strings.HasSuffix(content, "*") && !strings.HasPrefix(content, "**") && !strings.HasSuffix(content, "**")) || @@ -353,6 +354,8 @@ func FormatMessage(options MessageOptions) []string { nameColor = "yellow+b" } + content = ReplaceMarkdown(content, options.NoColor) + name := fmt.Sprintf("[%s]", options.Name) if !options.NoColor { name = ansi.Color(name, nameColor) diff --git a/main.go b/main.go index 76ace95..763d52b 100644 --- a/main.go +++ b/main.go @@ -128,7 +128,9 @@ func main() { client.AddIntents(gateway.IntentGuildPresences) client.AddIntents(gateway.IntentGuildMembers) client.AddIntents(gateway.IntentGuildMessages) + client.AddIntents(gateway.IntentGuildMessageReactions) client.AddIntents(gateway.IntentDirectMessages) + client.AddIntents(gateway.IntentDirectMessageReactions) client.AddIntents(gateway.IntentMessageContent) state.Setup(config, client)