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/bridge"
|
||||||
"github.com/42wim/matterbridge/matterhook"
|
"github.com/42wim/matterbridge/matterhook"
|
||||||
"github.com/slack-go/slack"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type BLegacy struct {
|
type BLegacy struct {
|
||||||
@@ -31,7 +30,9 @@ func (b *BLegacy) Connect() error {
|
|||||||
})
|
})
|
||||||
case b.GetString(tokenConfig) != "":
|
case b.GetString(tokenConfig) != "":
|
||||||
b.Log.Info("Connecting using token (sending)")
|
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()
|
b.rtm = b.sc.NewRTM()
|
||||||
go b.rtm.ManageConnection()
|
go b.rtm.ManageConnection()
|
||||||
b.Log.Info("Connecting using webhookbindaddress (receiving)")
|
b.Log.Info("Connecting using webhookbindaddress (receiving)")
|
||||||
@@ -57,7 +58,9 @@ func (b *BLegacy) Connect() error {
|
|||||||
})
|
})
|
||||||
if b.GetString(tokenConfig) != "" {
|
if b.GetString(tokenConfig) != "" {
|
||||||
b.Log.Info("Connecting using token (receiving)")
|
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.channels = newChannelManager(b.Log, b.sc)
|
||||||
b.users = newUserManager(b.Log, b.sc)
|
b.users = newUserManager(b.Log, b.sc)
|
||||||
b.rtm = b.sc.NewRTM()
|
b.rtm = b.sc.NewRTM()
|
||||||
@@ -66,7 +69,9 @@ func (b *BLegacy) Connect() error {
|
|||||||
}
|
}
|
||||||
} else if b.GetString(tokenConfig) != "" {
|
} else if b.GetString(tokenConfig) != "" {
|
||||||
b.Log.Info("Connecting using token (sending and receiving)")
|
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.channels = newChannelManager(b.Log, b.sc)
|
||||||
b.users = newUserManager(b.Log, b.sc)
|
b.users = newUserManager(b.Log, b.sc)
|
||||||
b.rtm = b.sc.NewRTM()
|
b.rtm = b.sc.NewRTM()
|
||||||
|
|||||||
@@ -110,30 +110,13 @@ func (b *Bslack) Connect() error {
|
|||||||
if token := b.GetString(tokenConfig); token != "" {
|
if token := b.GetString(tokenConfig); token != "" {
|
||||||
b.Log.Info("Connecting using 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.channels = newChannelManager(b.Log, b.sc)
|
||||||
b.users = newUserManager(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()
|
b.rtm = b.sc.NewRTM()
|
||||||
go b.rtm.ManageConnection()
|
go b.rtm.ManageConnection()
|
||||||
go b.handleSlack()
|
go b.handleSlack()
|
||||||
@@ -165,6 +148,35 @@ func (b *Bslack) Disconnect() error {
|
|||||||
return b.rtm.Disconnect()
|
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
|
// 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
|
// 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
|
// allow apps or bots to join channels themselves and they need to be invited
|
||||||
|
|||||||
Reference in New Issue
Block a user