commit ce57a4403c116f8d4cac48af0699d7928a407f72
parent 2ff3d4f1d9ca8033ae17ab59832c3b15972a185d
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 13 Jan 2023 14:32:33 -0800
Auto kick upper case typing retards
Diffstat:
2 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go
@@ -40,6 +40,7 @@ import (
"sync"
"sync/atomic"
"time"
+ "unicode"
"dkforest/pkg/clockwork"
"dkforest/pkg/config"
@@ -966,3 +967,15 @@ func CountBools(vals ...bool) (count int64) {
}
return count
}
+
+func CountUppercase(s string) (count, total int64) {
+ for _, r := range s {
+ if unicode.IsLetter(r) {
+ total++
+ if unicode.IsUpper(r) {
+ count++
+ }
+ }
+ }
+ return
+}
diff --git a/pkg/web/handlers/api/v1/spamInterceptor.go b/pkg/web/handlers/api/v1/spamInterceptor.go
@@ -61,6 +61,16 @@ func checkSpam(origMessage string, authUser *database.User) error {
return ErrSpamFilterTriggered
}
+ // Auto kick upper case typing retards
+ if authUser.GeneralMessagesCount <= 5 {
+ count, total := utils.CountUppercase(origMessage)
+ pct := float64(count) / float64(total)
+ if total > 5 && pct > 0.8 {
+ _ = dutils.SelfKick(*authUser, silentSelfKick)
+ return ErrSpamFilterTriggered
+ }
+ }
+
tot, wordsMap := utils.WordCount(lowerCaseMessage)
if tot >= 5 {
totalUniqueWords := len(wordsMap)