From 238ffa42707c36dbc07521ac9e928ceddaac6f36 Mon Sep 17 00:00:00 2001 From: flan Date: Thu, 8 Feb 2018 01:44:20 +0100 Subject: [PATCH] Truncate messages sent to IRC based on byte count --- bridge/irc/irc.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go index 117398f1..ee29ee2b 100644 --- a/bridge/irc/irc.go +++ b/bridge/irc/irc.go @@ -19,6 +19,7 @@ import ( "strconv" "strings" "time" + "unicode/utf8" ) type Birc struct { @@ -194,9 +195,12 @@ func (b *Birc) Send(msg config.Message) (string, error) { msg.Text = helper.SplitStringLength(msg.Text, b.Config.MessageLength) } for _, text := range strings.Split(msg.Text, "\n") { - input := []rune(text) if len(text) > b.Config.MessageLength { - text = string(input[:b.Config.MessageLength]) + " " + for len(text)+len(" ") > b.Config.MessageLength { + _, size := utf8.DecodeLastRuneInString(text) + text = text[:len(text)-size] + } + text += " " } if len(b.Local) < b.Config.MessageQueue { if len(b.Local) == b.Config.MessageQueue-1 {