diff --git a/cmd/app.go b/cmd/app.go index a110204..839cd4a 100644 --- a/cmd/app.go +++ b/cmd/app.go @@ -63,12 +63,6 @@ func (a *App) initialize() error { slackToken, _ = reader.ReadString('\n') a.m.setSlackToken(strings.TrimSpace(slackToken)) } - slackDMid, err = a.m.GetSlackAdminDMId() - if err != nil || slackDMid == "" { - fmt.Print("Slack Admin DM ID: ") - slackDMid, _ = reader.ReadString('\n') - a.m.setSlackAdminDMId(strings.TrimSpace(slackDMid)) - } go a.watchMessageChannel() go a.watchRTMEventChannel() diff --git a/cmd/model_slack.go b/cmd/model_slack.go index bc67d4c..dd54e79 100644 --- a/cmd/model_slack.go +++ b/cmd/model_slack.go @@ -1,8 +1,11 @@ package main import ( + "bufio" "errors" "fmt" + "os" + "strings" "time" "github.com/nlopes/slack" @@ -31,7 +34,16 @@ func (m *BotModel) NewSlack() error { var err error m.slackApiToken, err = m.getSlackToken() if err != nil { - return err + if strings.HasPrefix(err.Error(), "Couldn't find") { + m.RequestSlackToken() + } else { + return err + } + } + var slackDMid string + slackDMid, err = m.GetSlackAdminDMId() + if err != nil || slackDMid == "" { + m.RequestAdminDMId() } m.IncomingSlackMessages = make(chan *slack.MessageEvent, 50) m.OtherRTMEvents = make(chan *slack.RTMEvent, 50) @@ -44,6 +56,21 @@ func (m *BotModel) NewSlack() error { return nil } +func (m *BotModel) RequestAdminDMId() { + reader := bufio.NewReader(os.Stdin) + fmt.Print("Slack Admin DM ID: ") + dmId, _ := reader.ReadString('\n') + m.setSlackAdminDMId(strings.TrimSpace(dmId)) +} + +func (m *BotModel) RequestSlackToken() { + reader := bufio.NewReader(os.Stdin) + fmt.Print("Slack Token: ") + token, _ := reader.ReadString('\n') + m.slackApiToken = strings.TrimSpace(token) + m.setSlackToken(m.slackApiToken) +} + func (m *BotModel) HandleRTMEvents() { for msg := range m.slackRTM.IncomingEvents { switch ev := msg.Data.(type) {