From a08baa5f384c7ac8752419e9df470e065092038c Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 29 Oct 2023 12:09:03 +0300 Subject: [PATCH] Implement initial flavouor of ban by caps --- buny.go | 21 +++++++++++++++++++++ types.go | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/buny.go b/buny.go index 5136829..8d37185 100644 --- a/buny.go +++ b/buny.go @@ -254,8 +254,10 @@ func bunyChat(v xmpp.Chat) error { err error ) + // Действовать мы можем только в рамках тех комнат, где явно присуствуем. for _, cRoom := range roomsConnected { if cRoom == room { + // Перебирём правила чёрных списков. for _, bEntry := range blackList.Blacklist { // Обработаем правила глобального чёрного списка if bEntry.RoomName == "" { @@ -344,6 +346,25 @@ func bunyChat(v xmpp.Chat) error { } } + // Если включено, проверяем фразу на КАПС. + for _, channel := range config.Jabber.Channels { + if channel.Name == room && channel.AllCaps.Enabled { + // Нормализуем строку и вырежем из неё пробелы + normPhrase := strings.ReplaceAll(nString(v.Text), " ", "") + + // Проверяем согласно тому, что длина фразы более чем сколько-то символов + if len(normPhrase) >= channel.AllCaps.MinLength { + normPhraseUpper := strings.ReplaceAll(nStringUpper(v.Text), " ", "") + + if normPhrase == normPhraseUpper { + realJID := getRealJIDfromNick(v.Remote) + squash(room, realJID, false, v.Type) + } + } + + } + } + break } } diff --git a/types.go b/types.go index 93c7432..6fb6aa6 100644 --- a/types.go +++ b/types.go @@ -30,12 +30,12 @@ type myConfig struct { Bayes struct { Enabled bool `json:"enabled,omitempty"` MinWords int64 `json:"min_words,omitempty"` - MinLength int64 `json:"min_length,omitempty"` + MinLength int `json:"min_length,omitempty"` DefaultAction string `json:"default_action,omitempty"` } `json:"bayes,omitempty"` AllCaps struct { Enabled bool `json:"enabled,omitempty"` - MinLength int64 `json:"min_length,omitempty"` + MinLength int `json:"min_length,omitempty"` DefaultAction string `json:"default_action,omitempty"` } `json:"all_caps,omitempty"` } `json:"channels"`