diff options
| author | Nathan Perry <avaglir@gmail.com> | 2017-07-26 21:39:49 -0400 |
|---|---|---|
| committer | Nathan Perry <avaglir@gmail.com> | 2017-07-26 21:39:49 -0400 |
| commit | c6e5779f22b18b971f82ddd2c5de81015ac9740c (patch) | |
| tree | a12c969a04d0515a70c50ec44343fac98b8404c5 /messagectx.go | |
| parent | f3224ee0eb4d5def781f5e77121a405df054bfba (diff) | |
move messagectx to its own file
Diffstat (limited to 'messagectx.go')
| -rw-r--r-- | messagectx.go | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/messagectx.go b/messagectx.go new file mode 100644 index 0000000..ee38f5f --- /dev/null +++ b/messagectx.go @@ -0,0 +1,84 @@ +package thulani + +import ( + "strings" + "sync" + + "github.com/bwmarrin/discordgo" +) + +type messageCtx struct { + sync.Mutex + + *discordgo.Session + *discordgo.MessageCreate + + Command string + Matched bool + + Channel *discordgo.Channel + Member *discordgo.Member + Guild *discordgo.Guild +} + +func newCtx(s *discordgo.Session, m *discordgo.MessageCreate) (*messageCtx, error) { + matches := regex.FindStringSubmatch(m.Content) + command := "" + + if len(matches) != 0 { + command = strings.Split(matches[1], " ")[0] + } + + channel, err := s.State.Channel(m.ChannelID) + if err != nil { + return nil, err + } + + var ( + wg sync.WaitGroup + guild *discordgo.Guild + member *discordgo.Member + gErr, mErr error + ) + + wg.Add(2) + go func() { + guild, gErr = s.State.Guild(channel.GuildID) + defer wg.Done() + }() + + go func() { + member, mErr = s.GuildMember(channel.GuildID, m.Author.ID) + defer wg.Done() + }() + wg.Wait() + + if gErr != nil { + return nil, gErr + } + + if mErr != nil { + return nil, mErr + } + + return &messageCtx{ + Session: s, + MessageCreate: m, + + Command: command, + Matched: len(matches) == 0, + + Channel: channel, + Guild: guild, + Member: member, + }, nil +} + +func (ctx *messageCtx) sendMessage(str string, tts bool) { + if !ctx.Tts { + ctx.ChannelMessageSend(ctx.ChannelID, str) + return + } + + ctx.ChannelMessageSendTTS(ctx.ChannelID, str) +} |
