64 lines
1.4 KiB
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
|
|
}
|