Thumbnail

rani/matterbridge.git

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

commit a501a5e5a19ea6bff02916c4c6059d456014beaa Author: Wim <wim@42.be> Date: Fri Nov 24 23:27:13 2017 +0000 Add MessageSplit option to split messages on MessageLength (irc). Closes #281 diff --git a/bridge/config/config.go b/bridge/config/config.go index 8a13b48..47e2a1d 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -6210 +6211 @@ type Protocol struct {   Login string // mattermost, matrix   MediaServerDownload string   MediaServerUpload string - 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 + MessageLength int // IRC, max length of a message allowed + MessageQueue int // IRC, size of message queue for flood control + MessageSplit bool // IRC, split long messages with newlines on MessageLength instead of clipping   Muc string // xmpp   Name string // all protocols   Nick string // all protocols diff --git a/bridge/helper/helper.go b/bridge/helper/helper.go index ecfc4df..0b6be4f 100644 --- a/bridge/helper/helper.go +++ b/bridge/helper/helper.go @@ -263 +2615 @@ func DownloadFile(url string) (*[]byte, error) {   resp.Body.Close()   return &data, nil  } + +func SplitStringLength(input string, length int) string { + a := []rune(input) + str := "" + for i, r := range a { + str = str + string(r) + if i > 0 && (i+1)%length == 0 { + str += "\n" + } + } + return str +} diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go index 2d56bbc..4fd5a8a 100644 --- a/bridge/irc/irc.go +++ b/bridge/irc/irc.go @@ -56 +57 @@ import (   "crypto/tls"   "fmt"   "github.com/42wim/matterbridge/bridge/config" + "github.com/42wim/matterbridge/bridge/helper"   log "github.com/Sirupsen/logrus"   "github.com/lrstanley/girc"   "github.com/paulrosania/go-charset/charset" @@ -1916 +19210 @@ func (b *Birc) Send(msg config.Message) (string, error) {   }   }   + // split long messages on messageLength, to avoid clipped messages #281 + if b.Config.MessageSplit { + msg.Text = helper.SplitStringLength(msg.Text, b.Config.MessageLength) + }   for _, text := range strings.Split(msg.Text, "\n") {   if len(text) > b.Config.MessageLength {   text = text[:b.Config.MessageLength] + " <message clipped>" diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample index b6a674e..7552d39 100644 --- a/matterbridge.toml.sample +++ b/matterbridge.toml.sample @@ -806 +8011 @@ MessageQueue=30  #OPTIONAL (default 400)  MessageLength=400   +#Split messages on MessageLength instead of showing the <message clipped> +#WARNING: this could lead to flooding +#OPTIONAL (default false) +MessageSplit=false +  #Nicks you want to ignore.  #Messages from those users will not be sent to other bridges.  #OPTIONAL