group_helper/telegram/routines/joinchecker.go

109 lines
3.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package routines
import (
message2 "git.dragon-labs.de/alphyron/group_helper/message"
"git.dragon-labs.de/alphyron/group_helper/models"
"git.dragon-labs.de/alphyron/group_helper/obj"
"git.dragon-labs.de/alphyron/group_helper/telegram"
"git.dragon-labs.de/alphyron/group_helper/util"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
"log"
"math/rand"
"strconv"
"strings"
"time"
)
type joinCheckerRoutine struct {
verifyData *obj.VerifyData
}
func NewJoinCheckerRoutine(verifyData *obj.VerifyData) telegram.Routine {
return joinCheckerRoutine{
verifyData: verifyData,
}
}
func (j joinCheckerRoutine) Update(botAPI *tgbotapi.BotAPI, update *tgbotapi.Update, group *models.Group) error {
if update.Message == nil { // ignore any non-Message Updates
return nil
}
if update.Message.Chat.IsPrivate() || update.Message.Chat.IsChannel() {
return nil
}
if update.Message.NewChatMembers != nil {
for _, newUser := range *update.Message.NewChatMembers {
if newUser.IsBot {
continue
}
if hasDrugNames(strings.ToLower(newUser.FirstName)) ||
hasDrugNames(strings.ToLower(newUser.LastName)) ||
hasDrugNames(strings.ToLower(newUser.UserName)) {
botAPI.KickChatMember(tgbotapi.KickChatMemberConfig{
ChatMemberConfig: tgbotapi.ChatMemberConfig{
ChatID: update.Message.Chat.ID,
UserID: newUser.ID,
},
})
botAPI.DeleteMessage(tgbotapi.NewDeleteMessage(group.GroupID, update.Message.MessageID))
return nil
}
length := 3
tasks := make([][]tgbotapi.InlineKeyboardButton, length)
for i := 0; i < length; i++ {
tasks[i] = tgbotapi.NewInlineKeyboardRow(tgbotapi.NewInlineKeyboardButtonData(util.GenerateCalculation(i == 0), "UserValidation: "+strconv.FormatBool(i == 0)))
}
rand.Seed(time.Now().UnixNano())
rand.Shuffle(len(tasks), func(i, j int) { tasks[i], tasks[j] = tasks[j], tasks[i] })
markup := tgbotapi.NewInlineKeyboardMarkup(tasks...)
msg := tgbotapi.NewMessage(update.Message.Chat.ID, message2.ReplaceMessage(group.UserJoinMessage, &newUser, group))
msg.ParseMode = "Markdown"
msg.ReplyMarkup = markup
message, err := botAPI.Send(msg)
if err != nil {
log.Println("Problem to send verified Messages to user")
log.Println(newUser.FirstName)
log.Println(err)
}
j.verifyData.AddUser(&obj.VerifyUser{
UserID: newUser.ID,
GroupID: group.GroupID,
LeftTime: group.KickCooldown,
MessageID: message.MessageID,
})
}
}
return nil
}
func hasDrugNames(name string) bool {
return strings.Contains(name, "weed") ||
strings.Contains(name, "viagra") ||
strings.Contains(name, "mdma") ||
strings.Contains(name, "xanax") ||
strings.Contains(name, "😘") ||
strings.Contains(name, "𝗗𝗘𝗔𝗟𝗘𝗥") ||
strings.Contains(name, "𝗪𝗘𝗘𝗗") ||
strings.Contains(name, "🥰") ||
strings.Contains(name, "😍") ||
strings.Contains(name, "COKE") ||
strings.Contains(name, "💊") ||
strings.Contains(name, "KOKA") ||
strings.Contains(name, "WEED") ||
strings.Contains(name, "💊")
}