4
0
mirror of https://github.com/cwinfo/matterbridge.git synced 2025-06-26 14:19:24 +00:00

Add support for dynamic IconURL (slack). Closes #43

This commit is contained in:
Wim
2016-11-05 01:11:28 +01:00
parent 50a0df4279
commit 2dbe0eb557
9 changed files with 61 additions and 36 deletions

View File

@ -122,3 +122,19 @@ func OverrideCfgFromEnv(cfg *Config, protocol string, account string) {
}
}
}
func GetIconURL(msg *Message, cfg *Protocol) string {
iconURL := cfg.IconURL
iconURL = strings.Replace(iconURL, "{NICK}", msg.Username, -1)
iconURL = strings.Replace(iconURL, "{BRIDGE}", msg.Origin, -1)
iconURL = strings.Replace(iconURL, "{PROTOCOL}", msg.Protocol, -1)
return iconURL
}
func GetNick(msg *Message, cfg *Protocol) string {
nick := cfg.RemoteNickFormat
nick = strings.Replace(nick, "{NICK}", msg.Username, -1)
nick = strings.Replace(nick, "{BRIDGE}", msg.Origin, -1)
nick = strings.Replace(nick, "{PROTOCOL}", msg.Protocol, -1)
return nick
}

View File

@ -103,7 +103,8 @@ func (b *bdiscord) Send(msg config.Message) error {
flog.Errorf("Could not find channelID for %v", msg.Channel)
return nil
}
b.c.ChannelMessageSend(channelID, msg.Username+msg.Text)
nick := config.GetNick(&msg, b.Config)
b.c.ChannelMessageSend(channelID, nick+msg.Text)
return nil
}

View File

@ -105,8 +105,9 @@ func (b *Bgitter) Send(msg config.Message) error {
flog.Errorf("Could not find roomID for %v", msg.Channel)
return nil
}
nick := config.GetNick(&msg, b.Config)
// add ZWSP because gitter echoes our own messages
return b.c.SendMessage(roomID, msg.Username+msg.Text+" ")
return b.c.SendMessage(roomID, nick+msg.Text+" ")
}
func (b *Bgitter) getRoomID(channel string) string {

View File

@ -123,12 +123,13 @@ func (b *Birc) Send(msg config.Message) error {
b.Command(&msg)
return nil
}
nick := config.GetNick(&msg, b.Config)
for _, text := range strings.Split(msg.Text, "\n") {
if len(b.Local) < b.Config.MessageQueue {
if len(b.Local) == b.Config.MessageQueue-1 {
text = text + " <message clipped>"
}
b.Local <- config.Message{Text: text, Username: msg.Username, Channel: msg.Channel}
b.Local <- config.Message{Text: text, Username: nick, Channel: msg.Channel}
} else {
flog.Debugf("flooding, dropping message (queue at %d)", len(b.Local))
}

View File

@ -106,10 +106,10 @@ func (b *Bmattermost) Protocol() string {
func (b *Bmattermost) Send(msg config.Message) error {
flog.Debugf("Receiving %#v", msg)
return b.SendType(msg.Username, msg.Text, msg.Channel, "")
}
nick := config.GetNick(&msg, b.Config)
message := msg.Text
channel := msg.Channel
func (b *Bmattermost) SendType(nick string, message string, channel string, mtype string) error {
if b.Config.PrefixMessagesWithNick {
/*if IsMarkup(message) {
message = nick + "\n\n" + message
@ -122,7 +122,7 @@ func (b *Bmattermost) SendType(nick string, message string, channel string, mtyp
matterMessage := matterhook.OMessage{IconURL: b.Config.IconURL}
matterMessage.Channel = channel
matterMessage.UserName = nick
matterMessage.Type = mtype
matterMessage.Type = ""
matterMessage.Text = message
err := b.mh.Send(matterMessage)
if err != nil {

View File

@ -94,13 +94,12 @@ func (b *Bslack) Origin() string {
func (b *Bslack) Send(msg config.Message) error {
flog.Debugf("Receiving %#v", msg)
if msg.FullOrigin != b.FullOrigin() {
return b.SendType(msg.Username, msg.Text, msg.Channel, "")
if msg.FullOrigin == b.FullOrigin() {
return nil
}
return nil
}
func (b *Bslack) SendType(nick string, message string, channel string, mtype string) error {
nick := config.GetNick(&msg, b.Config)
message := msg.Text
channel := msg.Channel
if b.Config.PrefixMessagesWithNick {
message = nick + " " + message
}
@ -108,7 +107,7 @@ func (b *Bslack) SendType(nick string, message string, channel string, mtype str
matterMessage := matterhook.OMessage{IconURL: b.Config.IconURL}
matterMessage.Channel = channel
matterMessage.UserName = nick
matterMessage.Type = mtype
matterMessage.Type = ""
matterMessage.Text = message
err := b.mh.Send(matterMessage)
if err != nil {
@ -121,8 +120,19 @@ func (b *Bslack) SendType(nick string, message string, channel string, mtype str
if err != nil {
return err
}
newmsg := b.rtm.NewOutgoingMessage(message, schannel.ID)
b.rtm.SendMessage(newmsg)
np := slack.NewPostMessageParameters()
if b.Config.PrefixMessagesWithNick == true {
np.AsUser = true
}
np.Username = nick
np.IconURL = config.GetIconURL(&msg, b.Config)
b.sc.PostMessage(schannel.ID, message, np)
/*
newmsg := b.rtm.NewOutgoingMessage(message, schannel.ID)
b.rtm.SendMessage(newmsg)
*/
return nil
}

View File

@ -71,7 +71,8 @@ func (b *Bxmpp) Origin() string {
func (b *Bxmpp) Send(msg config.Message) error {
flog.Debugf("Receiving %#v", msg)
b.xc.Send(xmpp.Chat{Type: "groupchat", Remote: msg.Channel + "@" + b.Config.Muc, Text: msg.Username + msg.Text})
nick := config.GetNick(&msg, b.Config)
b.xc.Send(xmpp.Chat{Type: "groupchat", Remote: msg.Channel + "@" + b.Config.Muc, Text: nick + msg.Text})
return nil
}