Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit fb4cab44524e9bef8043e3a42c76763c07258dba Author: Wim <wim@42.be> Date: Wed Nov 15 23:32:49 2017 +0000 Add support for ReplaceMessages using regexp to replace messages. #269 diff --git a/bridge/config/config.go b/bridge/config/config.go index b412434..f26e60b 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -4852 +4853 @@ type ChannelInfo struct {  }    type Protocol struct { - AuthCode string // steam - BindAddress string // mattermost, slack // DEPRECATED - Buffer int // api - Charset string // irc - EditSuffix string // mattermost, slack, discord, telegram, gitter - EditDisable bool // mattermost, slack, discord, telegram, gitter - IconURL string // mattermost, slack - IgnoreNicks string // all protocols - IgnoreMessages string // all protocols - Jid string // xmpp - Login string // mattermost, matrix - Muc string // xmpp - Name string // all protocols - Nick string // all protocols - NickFormatter string // mattermost, slack - NickServNick string // IRC - NickServUsername string // IRC - NickServPassword string // IRC - NicksPerRow int // mattermost, slack - NoHomeServerSuffix bool // matrix - NoTLS bool // mattermost - Password string // IRC,mattermost,XMPP,matrix - PrefixMessagesWithNick bool // mattemost, slack - Protocol string //all protocols - MessageQueue int // IRC, size of message queue for flood control - MessageDelay int // IRC, time in millisecond to wait between messages - MessageLength int // IRC, max length of a message allowed - MessageFormat string // telegram - RemoteNickFormat string // all protocols - Server string // IRC,mattermost,XMPP,discord - ShowJoinPart bool // all protocols - ShowEmbeds bool // discord - SkipTLSVerify bool // IRC, mattermost - StripNick bool // all protocols - Team string // mattermost - Token string // gitter, slack, discord, api - URL string // mattermost, slack // DEPRECATED - UseAPI bool // mattermost, slack - UseSASL bool // IRC - UseTLS bool // IRC - UseFirstName bool // telegram - UseUserName bool // discord - UseInsecureURL bool // telegram - WebhookBindAddress string // mattermost, slack - WebhookURL string // mattermost, slack - WebhookUse string // mattermost, slack, discord + AuthCode string // steam + BindAddress string // mattermost, slack // DEPRECATED + Buffer int // api + Charset string // irc + EditSuffix string // mattermost, slack, discord, telegram, gitter + EditDisable bool // mattermost, slack, discord, telegram, gitter + IconURL string // mattermost, slack + IgnoreNicks string // all protocols + IgnoreMessages string // all protocols + Jid string // xmpp + Login string // mattermost, matrix + Muc string // xmpp + Name string // all protocols + Nick string // all protocols + NickFormatter string // mattermost, slack + NickServNick string // IRC + NickServUsername string // IRC + NickServPassword string // IRC + NicksPerRow int // mattermost, slack + NoHomeServerSuffix bool // matrix + NoTLS bool // mattermost + Password string // IRC,mattermost,XMPP,matrix + PrefixMessagesWithNick bool // mattemost, slack + Protocol string //all protocols + ReplaceMessages [][]string // all messages + MessageQueue int // IRC, size of message queue for flood control + MessageDelay int // IRC, time in millisecond to wait between messages + MessageLength int // IRC, max length of a message allowed + MessageFormat string // telegram + RemoteNickFormat string // all protocols + Server string // IRC,mattermost,XMPP,discord + ShowJoinPart bool // all protocols + ShowEmbeds bool // discord + SkipTLSVerify bool // IRC, mattermost + StripNick bool // all protocols + Team string // mattermost + Token string // gitter, slack, discord, api + URL string // mattermost, slack // DEPRECATED + UseAPI bool // mattermost, slack + UseSASL bool // IRC + UseTLS bool // IRC + UseFirstName bool // telegram + UseUserName bool // discord + UseInsecureURL bool // telegram + WebhookBindAddress string // mattermost, slack + WebhookURL string // mattermost, slack + WebhookUse string // mattermost, slack, discord  }    type ChannelOptions struct { diff --git a/gateway/gateway.go b/gateway/gateway.go index e1a6c9c..8a0a666 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -2876 +28719 @@ func (gw *Gateway) modifyAvatar(msg config.Message, dest *bridge.Bridge) string  func (gw *Gateway) modifyMessage(msg *config.Message) {   // replace :emoji: to unicode   msg.Text = emojilib.Replace(msg.Text) + br := gw.Bridges[msg.Account] + // loop to replace messages + for _, outer := range br.Config.ReplaceMessages { + search := outer[0] + replace := outer[1] + // TODO move compile to bridge init somewhere + re, err := regexp.Compile(search) + if err != nil { + log.Errorf("regexp in %s failed: %s", msg.Account, err) + break + } + msg.Text = re.ReplaceAllString(msg.Text, replace) + }   msg.Gateway = gw.Name  }