summaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
Diffstat (limited to 'bridge')
-rw-r--r--bridge/config/config.go5
-rw-r--r--bridge/helper/helper.go12
-rw-r--r--bridge/irc/irc.go5
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>"