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  }