forked from jshiffer/matterbridge
Add better support for multiperson DM (mattermost)
This commit is contained in:
parent
74e33b0a51
commit
e2b50d6194
@ -109,7 +109,7 @@ func (b *Bmattermost) Disconnect() error {
|
|||||||
func (b *Bmattermost) JoinChannel(channel config.ChannelInfo) error {
|
func (b *Bmattermost) JoinChannel(channel config.ChannelInfo) error {
|
||||||
// we can only join channels using the API
|
// we can only join channels using the API
|
||||||
if b.GetString("WebhookURL") == "" && b.GetString("WebhookBindAddress") == "" {
|
if b.GetString("WebhookURL") == "" && b.GetString("WebhookBindAddress") == "" {
|
||||||
id := b.mc.GetChannelId(channel.Name, "")
|
id := b.mc.GetChannelId(channel.Name, b.TeamID)
|
||||||
if id == "" {
|
if id == "" {
|
||||||
return fmt.Errorf("Could not find channel ID for channel %s", channel.Name)
|
return fmt.Errorf("Could not find channel ID for channel %s", channel.Name)
|
||||||
}
|
}
|
||||||
@ -147,7 +147,7 @@ func (b *Bmattermost) Send(msg config.Message) (string, error) {
|
|||||||
// Upload a file if it exists
|
// Upload a file if it exists
|
||||||
if msg.Extra != nil {
|
if msg.Extra != nil {
|
||||||
for _, rmsg := range helper.HandleExtra(&msg, b.General) {
|
for _, rmsg := range helper.HandleExtra(&msg, b.General) {
|
||||||
b.mc.PostMessage(b.mc.GetChannelId(rmsg.Channel, ""), rmsg.Username+rmsg.Text)
|
b.mc.PostMessage(b.mc.GetChannelId(rmsg.Channel, b.TeamID), rmsg.Username+rmsg.Text)
|
||||||
}
|
}
|
||||||
if len(msg.Extra["file"]) > 0 {
|
if len(msg.Extra["file"]) > 0 {
|
||||||
return b.handleUploadFile(&msg)
|
return b.handleUploadFile(&msg)
|
||||||
@ -165,7 +165,7 @@ func (b *Bmattermost) Send(msg config.Message) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Post normal message
|
// Post normal message
|
||||||
return b.mc.PostMessage(b.mc.GetChannelId(msg.Channel, ""), msg.Text)
|
return b.mc.PostMessage(b.mc.GetChannelId(msg.Channel, b.TeamID), msg.Text)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bmattermost) handleMatter() {
|
func (b *Bmattermost) handleMatter() {
|
||||||
@ -357,7 +357,7 @@ func (b *Bmattermost) handleDownloadFile(rmsg *config.Message, id string) error
|
|||||||
func (b *Bmattermost) handleUploadFile(msg *config.Message) (string, error) {
|
func (b *Bmattermost) handleUploadFile(msg *config.Message) (string, error) {
|
||||||
var err error
|
var err error
|
||||||
var res, id string
|
var res, id string
|
||||||
channelID := b.mc.GetChannelId(msg.Channel, "")
|
channelID := b.mc.GetChannelId(msg.Channel, b.TeamID)
|
||||||
for _, f := range msg.Extra["file"] {
|
for _, f := range msg.Extra["file"] {
|
||||||
fi := f.(config.FileInfo)
|
fi := f.(config.FileInfo)
|
||||||
id, err = b.mc.UploadFile(*fi.Data, channelID, fi.Name)
|
id, err = b.mc.UploadFile(*fi.Data, channelID, fi.Name)
|
||||||
|
@ -434,8 +434,9 @@ func (m *MMClient) GetChannelName(channelId string) string {
|
|||||||
for _, channel := range t.Channels {
|
for _, channel := range t.Channels {
|
||||||
if channel.Id == channelId {
|
if channel.Id == channelId {
|
||||||
if channel.Type == model.CHANNEL_GROUP {
|
if channel.Type == model.CHANNEL_GROUP {
|
||||||
res := strings.Replace(channel.DisplayName, ",", "_", -1)
|
res := strings.Replace(channel.DisplayName, ", ", "-", -1)
|
||||||
return strings.Replace(res, " ", "", -1)
|
res = strings.Replace(res, " ", "_", -1)
|
||||||
|
return res
|
||||||
}
|
}
|
||||||
return channel.Name
|
return channel.Name
|
||||||
}
|
}
|
||||||
@ -445,8 +446,9 @@ func (m *MMClient) GetChannelName(channelId string) string {
|
|||||||
for _, channel := range t.MoreChannels {
|
for _, channel := range t.MoreChannels {
|
||||||
if channel.Id == channelId {
|
if channel.Id == channelId {
|
||||||
if channel.Type == model.CHANNEL_GROUP {
|
if channel.Type == model.CHANNEL_GROUP {
|
||||||
res := strings.Replace(channel.DisplayName, ",", "_", -1)
|
res := strings.Replace(channel.DisplayName, ", ", "-", -1)
|
||||||
return strings.Replace(res, " ", "", -1)
|
res = strings.Replace(res, " ", "_", -1)
|
||||||
|
return res
|
||||||
}
|
}
|
||||||
return channel.Name
|
return channel.Name
|
||||||
}
|
}
|
||||||
@ -460,8 +462,20 @@ func (m *MMClient) GetChannelId(name string, teamId string) string {
|
|||||||
m.RLock()
|
m.RLock()
|
||||||
defer m.RUnlock()
|
defer m.RUnlock()
|
||||||
if teamId == "" {
|
if teamId == "" {
|
||||||
teamId = m.Team.Id
|
for _, t := range m.OtherTeams {
|
||||||
|
for _, channel := range append(t.Channels, t.MoreChannels...) {
|
||||||
|
if channel.Type == model.CHANNEL_GROUP {
|
||||||
|
res := strings.Replace(channel.DisplayName, ", ", "-", -1)
|
||||||
|
res = strings.Replace(res, " ", "_", -1)
|
||||||
|
if res == name {
|
||||||
|
return channel.Id
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, t := range m.OtherTeams {
|
for _, t := range m.OtherTeams {
|
||||||
if t.Id == teamId {
|
if t.Id == teamId {
|
||||||
for _, channel := range append(t.Channels, t.MoreChannels...) {
|
for _, channel := range append(t.Channels, t.MoreChannels...) {
|
||||||
@ -689,7 +703,7 @@ func (m *MMClient) SendDirectMessage(toUserId string, msg string) {
|
|||||||
|
|
||||||
// build & send the message
|
// build & send the message
|
||||||
msg = strings.Replace(msg, "\r", "", -1)
|
msg = strings.Replace(msg, "\r", "", -1)
|
||||||
post := &model.Post{ChannelId: m.GetChannelId(channelName, ""), Message: msg}
|
post := &model.Post{ChannelId: m.GetChannelId(channelName, m.Team.Id), Message: msg}
|
||||||
m.Client.CreatePost(post)
|
m.Client.CreatePost(post)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -743,9 +757,13 @@ func (m *MMClient) GetTeamFromChannel(channelId string) string {
|
|||||||
}
|
}
|
||||||
for _, c := range channels {
|
for _, c := range channels {
|
||||||
if c.Id == channelId {
|
if c.Id == channelId {
|
||||||
|
if c.Type == model.CHANNEL_GROUP {
|
||||||
|
return "G"
|
||||||
|
}
|
||||||
return t.Id
|
return t.Id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
channels = nil
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user