diff options
Diffstat (limited to 'bridge')
-rw-r--r-- | bridge/config/config.go | 5 | ||||
-rw-r--r-- | bridge/helper/helper.go | 12 | ||||
-rw-r--r-- | bridge/irc/irc.go | 5 |
3 files changed, 20 insertions, 2 deletions
diff --git a/bridge/config/config.go b/bridge/config/config.go index 8a13b488..47e2a1d6 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -62,10 +62,11 @@ 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 ecfc4df2..0b6be4f4 100644 --- a/bridge/helper/helper.go +++ b/bridge/helper/helper.go @@ -26,3 +26,15 @@ 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 2d56bbc6..4fd5a8a2 100644 --- a/bridge/irc/irc.go +++ b/bridge/irc/irc.go @@ -5,6 +5,7 @@ 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" @@ -191,6 +192,10 @@ 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>" |