mirror of
https://github.com/InsanusMokrassar/CaptchaPlaguBotPlugin.git
synced 2025-01-05 23:40:03 +00:00
updates
This commit is contained in:
parent
f4019f67e2
commit
867a2b6fe5
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
@ -15,7 +15,6 @@ import dev.inmo.tgbotapi.extensions.api.chat.members.*
|
|||||||
import dev.inmo.tgbotapi.extensions.api.deleteMessage
|
import dev.inmo.tgbotapi.extensions.api.deleteMessage
|
||||||
import dev.inmo.tgbotapi.extensions.api.edit.ReplyMarkup.editMessageReplyMarkup
|
import dev.inmo.tgbotapi.extensions.api.edit.ReplyMarkup.editMessageReplyMarkup
|
||||||
import dev.inmo.tgbotapi.extensions.api.send.*
|
import dev.inmo.tgbotapi.extensions.api.send.*
|
||||||
import dev.inmo.tgbotapi.extensions.api.send.media.reply
|
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.*
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.*
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitBaseInlineQuery
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitBaseInlineQuery
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitDataCallbackQuery
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitDataCallbackQuery
|
||||||
@ -24,6 +23,7 @@ import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter
|
|||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onNewChatMembers
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onNewChatMembers
|
||||||
import dev.inmo.tgbotapi.extensions.utils.*
|
import dev.inmo.tgbotapi.extensions.utils.*
|
||||||
import dev.inmo.tgbotapi.extensions.utils.extensions.parseCommandsWithParams
|
import dev.inmo.tgbotapi.extensions.utils.extensions.parseCommandsWithParams
|
||||||
|
import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat
|
||||||
import dev.inmo.tgbotapi.extensions.utils.formatting.buildEntities
|
import dev.inmo.tgbotapi.extensions.utils.formatting.buildEntities
|
||||||
import dev.inmo.tgbotapi.extensions.utils.formatting.regular
|
import dev.inmo.tgbotapi.extensions.utils.formatting.regular
|
||||||
import dev.inmo.tgbotapi.extensions.utils.shortcuts.executeUnsafe
|
import dev.inmo.tgbotapi.extensions.utils.shortcuts.executeUnsafe
|
||||||
@ -90,10 +90,10 @@ class CaptchaBotPlugin : Plugin {
|
|||||||
suspend fun Chat.settings() = repo.getById(id) ?: repo.create(ChatSettings(id)).first()
|
suspend fun Chat.settings() = repo.getById(id) ?: repo.create(ChatSettings(id)).first()
|
||||||
|
|
||||||
onNewChatMembers(
|
onNewChatMembers(
|
||||||
additionalFilter = {
|
initialFilter = {
|
||||||
it.chat.asPublicChat() != null
|
it.chat.asPublicChat() != null
|
||||||
},
|
},
|
||||||
includeFilterByChatInBehaviourSubContext = false
|
subcontextUpdatesFilter = { m, u -> u.sourceChat() == m.chat },
|
||||||
) {
|
) {
|
||||||
launchSafelyWithoutExceptions {
|
launchSafelyWithoutExceptions {
|
||||||
safelyWithoutExceptions { deleteMessage(it) }
|
safelyWithoutExceptions { deleteMessage(it) }
|
||||||
|
@ -3,11 +3,12 @@ package dev.inmo.plagubot.plugins.captcha.provider
|
|||||||
import com.benasher44.uuid.uuid4
|
import com.benasher44.uuid.uuid4
|
||||||
import com.soywiz.klock.DateTime
|
import com.soywiz.klock.DateTime
|
||||||
import com.soywiz.klock.seconds
|
import com.soywiz.klock.seconds
|
||||||
|
import dev.inmo.micro_utils.common.joinTo
|
||||||
|
import dev.inmo.micro_utils.coroutines.safelyWithResult
|
||||||
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
||||||
import dev.inmo.plagubot.plugins.captcha.slotMachineReplyMarkup
|
import dev.inmo.plagubot.plugins.captcha.slotMachineReplyMarkup
|
||||||
import dev.inmo.tgbotapi.extensions.api.answers.answerCallbackQuery
|
import dev.inmo.tgbotapi.extensions.api.answers.answerCallbackQuery
|
||||||
import dev.inmo.tgbotapi.extensions.api.chat.members.kickChatMember
|
import dev.inmo.tgbotapi.extensions.api.chat.members.*
|
||||||
import dev.inmo.tgbotapi.extensions.api.chat.members.restrictChatMember
|
|
||||||
import dev.inmo.tgbotapi.extensions.api.deleteMessage
|
import dev.inmo.tgbotapi.extensions.api.deleteMessage
|
||||||
import dev.inmo.tgbotapi.extensions.api.edit.ReplyMarkup.editMessageReplyMarkup
|
import dev.inmo.tgbotapi.extensions.api.edit.ReplyMarkup.editMessageReplyMarkup
|
||||||
import dev.inmo.tgbotapi.extensions.api.send.sendDice
|
import dev.inmo.tgbotapi.extensions.api.send.sendDice
|
||||||
@ -20,12 +21,12 @@ import dev.inmo.tgbotapi.extensions.utils.formatting.*
|
|||||||
import dev.inmo.tgbotapi.extensions.utils.shortcuts.executeUnsafe
|
import dev.inmo.tgbotapi.extensions.utils.shortcuts.executeUnsafe
|
||||||
import dev.inmo.tgbotapi.extensions.utils.types.buttons.InlineKeyboardMarkup
|
import dev.inmo.tgbotapi.extensions.utils.types.buttons.InlineKeyboardMarkup
|
||||||
import dev.inmo.tgbotapi.requests.DeleteMessage
|
import dev.inmo.tgbotapi.requests.DeleteMessage
|
||||||
|
import dev.inmo.tgbotapi.types.*
|
||||||
import dev.inmo.tgbotapi.types.MessageEntity.textsources.mention
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.mention
|
||||||
import dev.inmo.tgbotapi.types.Seconds
|
import dev.inmo.tgbotapi.types.MessageEntity.textsources.plus
|
||||||
import dev.inmo.tgbotapi.types.User
|
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton
|
||||||
import dev.inmo.tgbotapi.types.chat.LeftRestrictionsChatPermissions
|
import dev.inmo.tgbotapi.types.chat.LeftRestrictionsChatPermissions
|
||||||
import dev.inmo.tgbotapi.types.chat.abstracts.GroupChat
|
import dev.inmo.tgbotapi.types.chat.abstracts.*
|
||||||
import dev.inmo.tgbotapi.types.dice.SlotMachineDiceAnimationType
|
import dev.inmo.tgbotapi.types.dice.SlotMachineDiceAnimationType
|
||||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
@ -46,6 +47,33 @@ sealed class CaptchaProvider {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private suspend fun BehaviourContext.banUser(
|
||||||
|
chat: PublicChat,
|
||||||
|
user: User,
|
||||||
|
onFailure: suspend BehaviourContext.(Throwable) -> Unit = {
|
||||||
|
safelyWithResult {
|
||||||
|
sendTextMessage(
|
||||||
|
chat,
|
||||||
|
buildEntities(" ") {
|
||||||
|
user.mention(
|
||||||
|
listOfNotNull(
|
||||||
|
user.lastName.takeIf { it.isNotBlank() }, user.firstName.takeIf { it.isNotBlank() }
|
||||||
|
).takeIf {
|
||||||
|
it.isNotEmpty()
|
||||||
|
} ?.joinToString(" ") ?: "User"
|
||||||
|
)
|
||||||
|
+"failed captcha"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
): Result<Boolean> = safelyWithResult {
|
||||||
|
restrictChatMember(chat, user, permissions = LeftRestrictionsChatPermissions)
|
||||||
|
banChatMember(chat, user)
|
||||||
|
}.onFailure {
|
||||||
|
onFailure(it)
|
||||||
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SlotMachineCaptchaProvider(
|
data class SlotMachineCaptchaProvider(
|
||||||
val checkTimeSeconds: Seconds = 300,
|
val checkTimeSeconds: Seconds = 300,
|
||||||
@ -121,10 +149,7 @@ data class SlotMachineCaptchaProvider(
|
|||||||
if (user !in authorizedUsers) {
|
if (user !in authorizedUsers) {
|
||||||
context.stop()
|
context.stop()
|
||||||
if (kick) {
|
if (kick) {
|
||||||
safelyWithoutExceptions {
|
banUser(chat, user)
|
||||||
restrictChatMember(chat, user, permissions = LeftRestrictionsChatPermissions)
|
|
||||||
kickChatMember(chat, user)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -192,10 +217,7 @@ data class SimpleCaptchaProvider(
|
|||||||
if (job.isActive) {
|
if (job.isActive) {
|
||||||
job.cancel()
|
job.cancel()
|
||||||
if (kick) {
|
if (kick) {
|
||||||
safelyWithoutExceptions {
|
banUser(chat, it)
|
||||||
restrictChatMember(chat, it, permissions = LeftRestrictionsChatPermissions)
|
|
||||||
kickChatMember(chat, it)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stop()
|
stop()
|
||||||
@ -249,7 +271,7 @@ private object ExpressionBuilder {
|
|||||||
@Serializable
|
@Serializable
|
||||||
data class ExpressionCaptchaProvider(
|
data class ExpressionCaptchaProvider(
|
||||||
val checkTimeSeconds: Seconds = 60,
|
val checkTimeSeconds: Seconds = 60,
|
||||||
val captchaText: String = "solve next captcha:",
|
val captchaText: String = "Solve next captcha:",
|
||||||
val leftRetriesText: String = "Nope, left retries: ",
|
val leftRetriesText: String = "Nope, left retries: ",
|
||||||
val maxPerNumber: Int = 10,
|
val maxPerNumber: Int = 10,
|
||||||
val operations: Int = 2,
|
val operations: Int = 2,
|
||||||
@ -311,10 +333,7 @@ data class ExpressionCaptchaProvider(
|
|||||||
safelyWithoutExceptions { restrictChatMember(chat, user, permissions = LeftRestrictionsChatPermissions) }
|
safelyWithoutExceptions { restrictChatMember(chat, user, permissions = LeftRestrictionsChatPermissions) }
|
||||||
} else {
|
} else {
|
||||||
if (kick) {
|
if (kick) {
|
||||||
safelyWithoutExceptions {
|
banUser(chat, user)
|
||||||
restrictChatMember(chat, user, permissions = LeftRestrictionsChatPermissions)
|
|
||||||
kickChatMember(chat, user)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user