slack: assign userID and botID in all scenarios
This commit is contained in:
@@ -5,7 +5,6 @@ import (
|
||||
|
||||
"github.com/42wim/matterbridge/bridge"
|
||||
"github.com/42wim/matterbridge/matterhook"
|
||||
"github.com/slack-go/slack"
|
||||
)
|
||||
|
||||
type BLegacy struct {
|
||||
@@ -31,7 +30,9 @@ func (b *BLegacy) Connect() error {
|
||||
})
|
||||
case b.GetString(tokenConfig) != "":
|
||||
b.Log.Info("Connecting using token (sending)")
|
||||
b.sc = slack.New(b.GetString(tokenConfig))
|
||||
if err := b.createSlackClient(); err != nil {
|
||||
return err
|
||||
}
|
||||
b.rtm = b.sc.NewRTM()
|
||||
go b.rtm.ManageConnection()
|
||||
b.Log.Info("Connecting using webhookbindaddress (receiving)")
|
||||
@@ -57,7 +58,9 @@ func (b *BLegacy) Connect() error {
|
||||
})
|
||||
if b.GetString(tokenConfig) != "" {
|
||||
b.Log.Info("Connecting using token (receiving)")
|
||||
b.sc = slack.New(b.GetString(tokenConfig), slack.OptionDebug(b.GetBool("debug")))
|
||||
if err := b.createSlackClient(); err != nil {
|
||||
return err
|
||||
}
|
||||
b.channels = newChannelManager(b.Log, b.sc)
|
||||
b.users = newUserManager(b.Log, b.sc)
|
||||
b.rtm = b.sc.NewRTM()
|
||||
@@ -66,7 +69,9 @@ func (b *BLegacy) Connect() error {
|
||||
}
|
||||
} else if b.GetString(tokenConfig) != "" {
|
||||
b.Log.Info("Connecting using token (sending and receiving)")
|
||||
b.sc = slack.New(b.GetString(tokenConfig), slack.OptionDebug(b.GetBool("debug")))
|
||||
if err := b.createSlackClient(); err != nil {
|
||||
return err
|
||||
}
|
||||
b.channels = newChannelManager(b.Log, b.sc)
|
||||
b.users = newUserManager(b.Log, b.sc)
|
||||
b.rtm = b.sc.NewRTM()
|
||||
|
||||
@@ -110,30 +110,13 @@ func (b *Bslack) Connect() error {
|
||||
if token := b.GetString(tokenConfig); token != "" {
|
||||
b.Log.Info("Connecting using token")
|
||||
|
||||
b.sc = slack.New(token, slack.OptionDebug(b.GetBool("Debug")))
|
||||
if err := b.createSlackClient(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
b.channels = newChannelManager(b.Log, b.sc)
|
||||
b.users = newUserManager(b.Log, b.sc)
|
||||
|
||||
// Get our own user ID
|
||||
authTestResp, err := b.sc.AuthTest()
|
||||
if err != nil {
|
||||
return errors.New("auth_test: " + err.Error())
|
||||
}
|
||||
b.userID = authTestResp.UserID
|
||||
|
||||
// Get the info of our user ID so that we can determine our bot ID
|
||||
user, err := b.sc.GetUserInfo(b.userID)
|
||||
if err != nil {
|
||||
return errors.New("get_user_info: " + err.Error())
|
||||
}
|
||||
if user.IsBot {
|
||||
b.botID = user.Profile.BotID
|
||||
b.Log.Debugf("Our bot ID is %#v\n", b.botID)
|
||||
} else {
|
||||
b.Log.Debugln("We are not a bot.")
|
||||
}
|
||||
|
||||
b.rtm = b.sc.NewRTM()
|
||||
go b.rtm.ManageConnection()
|
||||
go b.handleSlack()
|
||||
@@ -165,6 +148,35 @@ func (b *Bslack) Disconnect() error {
|
||||
return b.rtm.Disconnect()
|
||||
}
|
||||
|
||||
func (b *Bslack) createSlackClient() error {
|
||||
if b.sc != nil {
|
||||
panic("createSlackClient should be called exactly once")
|
||||
}
|
||||
|
||||
b.sc = slack.New(b.GetString(tokenConfig), slack.OptionDebug(b.GetBool("Debug")))
|
||||
|
||||
// Get our own user ID
|
||||
authTestResp, err := b.sc.AuthTest()
|
||||
if err != nil {
|
||||
return errors.New("auth_test: " + err.Error())
|
||||
}
|
||||
b.userID = authTestResp.UserID
|
||||
|
||||
// Get the info of our user ID so that we can determine our bot ID
|
||||
user, err := b.sc.GetUserInfo(b.userID)
|
||||
if err != nil {
|
||||
return errors.New("get_user_info: " + err.Error())
|
||||
}
|
||||
if user.IsBot {
|
||||
b.botID = user.Profile.BotID
|
||||
b.Log.Debugf("Our bot ID is %#v\n", b.botID)
|
||||
} else {
|
||||
b.Log.Debugln("We are not a bot.")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// JoinChannel only acts as a verification method that checks whether Matterbridge's
|
||||
// Slack integration is already member of the channel. This is because Slack does not
|
||||
// allow apps or bots to join channels themselves and they need to be invited
|
||||
|
||||
Reference in New Issue
Block a user