aboutsummaryrefslogtreecommitdiff
path: root/messagectx.go
diff options
context:
space:
mode:
authorNathan Perry <avaglir@gmail.com>2017-07-26 21:39:49 -0400
committerNathan Perry <avaglir@gmail.com>2017-07-26 21:39:49 -0400
commitc6e5779f22b18b971f82ddd2c5de81015ac9740c (patch)
treea12c969a04d0515a70c50ec44343fac98b8404c5 /messagectx.go
parentf3224ee0eb4d5def781f5e77121a405df054bfba (diff)
move messagectx to its own file
Diffstat (limited to 'messagectx.go')
-rw-r--r--messagectx.go84
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)
+}