helperbot/cmd/model_slack.go

64 lines
1.4 KiB
Go

package main
import (
goslack "git.bullercodeworks.com/brian/go-slack"
"github.com/nlopes/slack"
)
/* 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) {
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
}
if m.slack, err = goslack.CreateSlack(token); err != nil {
return err
}
m.slack.StartRTM()
return nil
}
func (a *App) MonitorSlackMessages() {
for msg := range a.m.slack.IncomingMessages {
a.m.SendMessage("slack", "main", slack.Message(*msg))
}
}
func (m *BotModel) SendSlackChannelMessage(msg *slack.Message) error {
if DebugMode {
return m.SendSlackAdminMessage(msg)
}
// Send message to slack channel
m.slack.PostMessage(msg)
return nil
}
func (m *BotModel) SendSlackAdminMessage(msg *slack.Message) error {
// Send message to slack admin
var err error
msg.Channel, err = m.GetSlackAdminDMId()
if err != nil {
return err
}
m.slack.PostMessage(msg)
return nil
}