From 52b3f41fadc7b1d31658e06e595aa1a06546533e Mon Sep 17 00:00:00 2001 From: MrPowerGamerBR Date: Tue, 22 Oct 2024 15:59:52 -0300 Subject: [PATCH] Allow checking multiple cIDs instead of only checking one --- .../lorittaautomods/CheckDupeClientIds.kt | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/main/kotlin/net/perfectdreams/loritta/helper/utils/lorittaautomods/CheckDupeClientIds.kt b/src/main/kotlin/net/perfectdreams/loritta/helper/utils/lorittaautomods/CheckDupeClientIds.kt index 6b8f037c..9f0b38ff 100644 --- a/src/main/kotlin/net/perfectdreams/loritta/helper/utils/lorittaautomods/CheckDupeClientIds.kt +++ b/src/main/kotlin/net/perfectdreams/loritta/helper/utils/lorittaautomods/CheckDupeClientIds.kt @@ -67,21 +67,25 @@ class CheckDupeClientIds(val helper: LorittaHelper) : RunnableCoroutine { .toList() val usersToBeBanned = mutableListOf() + val alreadyChecked = mutableSetOf() - for (clientIdThatAreBanned in clientIdsThatAreBanned) { - val users = dailiesGotInLast24Hours.filter { it[BrowserFingerprints.clientId] == clientIdThatAreBanned[BrowserFingerprints.clientId] } - // println("User ${user[Dailies.receivedById]} should be banned because ${clientIdThatAreBanned[BannedUsers.userId]} is banned") + for (user in dailiesGotInLast24Hours) { + if (user[Dailies.receivedById] !in alreadyChecked) + continue - for (user in users) { + val bannedUsersAssociatedWithThisUser = clientIdsThatAreBanned.filter { it[BrowserFingerprints.clientId] == user[BrowserFingerprints.clientId] } + + if (bannedUsersAssociatedWithThisUser.isNotEmpty()) { usersToBeBanned.add( BannedUser( user[Dailies.receivedById], - clientIdThatAreBanned[BannedUsers.userId], - clientIdThatAreBanned[BrowserFingerprints.clientId], - clientIdThatAreBanned[BannedUsers.reason], + bannedUsersAssociatedWithThisUser.map { it[BannedUsers.userId] }, + user[BrowserFingerprints.clientId], + bannedUsersAssociatedWithThisUser.minBy { it[BannedUsers.bannedAt] }[BannedUsers.reason], user[Profiles.money] ) ) + alreadyChecked.add(user[Dailies.receivedById]) } } @@ -90,17 +94,21 @@ class CheckDupeClientIds(val helper: LorittaHelper) : RunnableCoroutine { for (userToBeBanned in usersToBeBanned) { if (!dryRun) { - channel.sendMessage("${Emotes.LORI_BAN_HAMMER} Banindo <@${userToBeBanned.userToBeBannedId}> (`${userToBeBanned.userToBeBannedId}`) pois ele é evasão de ban de <@${userToBeBanned.relatedUserId}> (`${userToBeBanned.relatedUserId}`), o meliante está banido por `${userToBeBanned.reason}`, o client ID dele é `${userToBeBanned.clientId}`, e atualmente ele possui ${userToBeBanned.sonhos} sonhos").await() + channel.sendMessage("${Emotes.LORI_BAN_HAMMER} Banindo <@${userToBeBanned.userToBeBannedId}> (`${userToBeBanned.userToBeBannedId}`) pois ele é evasão de ban de ${userToBeBanned.relatedUserIds.joinToString { "<@${userToBeBanned.relatedUserIds}> (`${userToBeBanned.relatedUserIds}`)"}}, o meliante está banido por `${userToBeBanned.reason}` (motivo do ban mais antigo), o client ID dele é `${userToBeBanned.clientId}`, e atualmente ele possui ${userToBeBanned.sonhos} sonhos").await() LoriToolsCommand.banUser( helper, helper.jda.selfUser.idLong, setOf(userToBeBanned.userToBeBannedId), - "Evasão de Ban! (ID da conta banida: ${userToBeBanned.relatedUserId})", + if (userToBeBanned.relatedUserIds.size == 1) { + "Evasão de Ban! (ID da conta banida: ${userToBeBanned.relatedUserIds.first()})" + } else { + "Evasão de Ban! (IDs de contas banidas: ${userToBeBanned.relatedUserIds.joinToString()})" + }, null ) } else { - channel.sendMessage("${Emotes.LORI_BAN_HAMMER} Banindo <@${userToBeBanned.userToBeBannedId}> (`${userToBeBanned.userToBeBannedId}`) pois ele é evasão de ban de <@${userToBeBanned.relatedUserId}> (`${userToBeBanned.relatedUserId}`), o meliante está banido por `${userToBeBanned.reason}`, o client ID dele é `${userToBeBanned.clientId}`, e atualmente ele possui ${userToBeBanned.sonhos} sonhos (ensaio, usuário não foi banido)").await() + channel.sendMessage("${Emotes.LORI_BAN_HAMMER} Banindo <@${userToBeBanned.userToBeBannedId}> (`${userToBeBanned.userToBeBannedId}`) pois ele é evasão de ban de ${userToBeBanned.relatedUserIds.joinToString { "<@${userToBeBanned.relatedUserIds}> (`${userToBeBanned.relatedUserIds}`)"}}, o meliante está banido por `${userToBeBanned.reason}` (motivo do ban mais antigo), o client ID dele é `${userToBeBanned.clientId}`, e atualmente ele possui ${userToBeBanned.sonhos} sonhos (ensaio, usuário não foi banido)").await() } } @@ -114,7 +122,7 @@ class CheckDupeClientIds(val helper: LorittaHelper) : RunnableCoroutine { private data class BannedUser( val userToBeBannedId: Long, - val relatedUserId: Long, + val relatedUserIds: List, val clientId: UUID, val reason: String, val sonhos: Long