helperbot/cmd/model_slack.go

78 lines
1.7 KiB
Go

package main
import (
slack "git.bullercodeworks.com/brian/go-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"})
}
func (m *BotModel) setSlackChannelId(chanId string) error {
return m.SetString([]string{"slack", "config", "channel_id"}, chanId)
}
func (m *BotModel) getSlackChannelId() (string, error) {
return m.GetString([]string{"slack", "config", "channel_id"})
}
/* End DB Functions */
func (m *BotModel) NewSlack() error {
token, err := m.getSlackToken()
if err != nil {
return err
}
if m.slack, err = slack.CreateSlack(token); err != nil {
return err
}
return nil
}
func (a *App) MonitorSlackMessages() {
for a.running {
msg, err := a.m.slack.GetMessage()
if err == nil {
a.m.SendMessage("slack", "main", msg)
}
}
}
func (m *BotModel) SendSlackChannelMessage(msg *slack.Message) error {
if DebugMode {
return m.SendSlackAdminMessage(msg)
}
// Send message to slack channel
var err error
if err = m.slack.PostMessage(*msg); err != nil {
return err
}
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
}
if err = m.slack.PostMessage(*msg); err != nil {
return err
}
return nil
}