github.com/starshine-sys/bcr@v0.21.0/message_handler.go (about) 1 package bcr 2 3 import ( 4 "github.com/diamondburned/arikawa/v3/discord" 5 "github.com/diamondburned/arikawa/v3/gateway" 6 ) 7 8 type messageInfo struct { 9 ctx *Context 10 fn func(*Context, discord.Message) 11 } 12 13 type messageKey struct { 14 channelID discord.ChannelID 15 userID discord.UserID 16 } 17 18 // MsgHandlerCreate runs when a new message is sent 19 func (r *Router) MsgHandlerCreate(e *gateway.MessageCreateEvent) { 20 // if the author is a bot, return 21 if e.Author.Bot { 22 return 23 } 24 25 r.messageMu.Lock() 26 defer r.messageMu.Unlock() 27 if v, ok := r.messages[messageKey{ 28 channelID: e.ChannelID, 29 userID: e.Author.ID, 30 }]; ok { 31 // delete the handler 32 delete(r.messages, messageKey{ 33 channelID: e.ChannelID, 34 userID: e.Author.ID, 35 }) 36 37 // run the handler 38 v.fn(v.ctx, e.Message) 39 } 40 }