helperbot/cmd/model_slack.go

64 lines
1.4 KiB
Go
Raw Normal View History

2019-11-13 00:45:56 +00:00
package main
import (
2019-11-21 23:45:04 +00:00
goslack "git.bullercodeworks.com/brian/go-slack"
"github.com/nlopes/slack"
2019-11-13 00:45:56 +00:00
)
/* DB Functions */
func (m *BotModel) setSlackToken(token string) error {
return m.SetBytes([]string{"slack", "config", "token"}, []byte(token))
}
func (m *BotModel) getSlackToken() (string, error) {
return m.GetString([]string{"slack", "config", "token"})
}
func (m *BotModel) setSlackAdminDMId(adminId string) error {
return m.SetString([]string{"slack", "config", "admin_dm_id"}, adminId)
}
func (m *BotModel) GetSlackAdminDMId() (string, error) {
2019-11-13 00:45:56 +00:00
return m.GetString([]string{"slack", "config", "admin_dm_id"})
}
/* End DB Functions */
func (m *BotModel) NewSlack() error {
token, err := m.getSlackToken()
if err != nil {
return err
}
2019-11-21 23:45:04 +00:00
if m.slack, err = goslack.CreateSlack(token); err != nil {
2019-11-13 00:45:56 +00:00
return err
}
2019-11-21 23:45:04 +00:00
m.slack.StartRTM()
2019-11-13 00:45:56 +00:00
return nil
}
func (a *App) MonitorSlackMessages() {
2019-11-21 23:45:04 +00:00
for msg := range a.m.slack.IncomingMessages {
a.m.SendMessage("slack", "main", slack.Message(*msg))
2019-11-13 00:45:56 +00:00
}
}
func (m *BotModel) SendSlackChannelMessage(msg *slack.Message) error {
if DebugMode {
return m.SendSlackAdminMessage(msg)
}
// Send message to slack channel
2019-11-21 23:45:04 +00:00
m.slack.PostMessage(msg)
2019-11-13 00:45:56 +00:00
return nil
}
func (m *BotModel) SendSlackAdminMessage(msg *slack.Message) error {
// Send message to slack admin
var err error
msg.Channel, err = m.GetSlackAdminDMId()
2019-11-13 00:45:56 +00:00
if err != nil {
return err
}
2019-11-21 23:45:04 +00:00
m.slack.PostMessage(msg)
2019-11-13 00:45:56 +00:00
return nil
}