mirror of
https://github.com/InsanusMokrassar/CaptchaPlaguBotPlugin.git
synced 2025-01-05 23:40:03 +00:00
add setting up of captcha method
This commit is contained in:
parent
b3a9a9875f
commit
1d4baa8be9
@ -10,7 +10,7 @@ kotlin_serialisation_runtime_version=1.1.0
|
|||||||
plagubot_version=0.1.6
|
plagubot_version=0.1.6
|
||||||
|
|
||||||
micro_utils_version=0.4.31
|
micro_utils_version=0.4.31
|
||||||
tgbotapi_libraries_version=0.0.3-branch_master-build14
|
tgbotapi_libraries_version=0.0.3-branch_master-build15
|
||||||
|
|
||||||
project_group=dev.inmo
|
project_group=dev.inmo
|
||||||
project_version=0.1.6
|
project_version=0.1.6
|
||||||
|
@ -4,15 +4,15 @@ import dev.inmo.micro_utils.coroutines.*
|
|||||||
import dev.inmo.micro_utils.repos.create
|
import dev.inmo.micro_utils.repos.create
|
||||||
import dev.inmo.plagubot.Plugin
|
import dev.inmo.plagubot.Plugin
|
||||||
import dev.inmo.plagubot.plugins.captcha.db.CaptchaChatsSettingsRepo
|
import dev.inmo.plagubot.plugins.captcha.db.CaptchaChatsSettingsRepo
|
||||||
|
import dev.inmo.plagubot.plugins.captcha.provider.*
|
||||||
import dev.inmo.plagubot.plugins.captcha.settings.ChatSettings
|
import dev.inmo.plagubot.plugins.captcha.settings.ChatSettings
|
||||||
import dev.inmo.tgbotapi.bot.TelegramBot
|
import dev.inmo.tgbotapi.bot.TelegramBot
|
||||||
import dev.inmo.tgbotapi.extensions.api.answers.answerCallbackQuery
|
import dev.inmo.tgbotapi.extensions.api.answers.answerCallbackQuery
|
||||||
import dev.inmo.tgbotapi.extensions.api.chat.members.*
|
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.media.reply
|
import dev.inmo.tgbotapi.extensions.api.send.media.reply
|
||||||
import dev.inmo.tgbotapi.extensions.api.send.sendDice
|
|
||||||
import dev.inmo.tgbotapi.extensions.api.send.sendTextMessage
|
|
||||||
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
|
||||||
@ -20,6 +20,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onComman
|
|||||||
import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter
|
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.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
|
||||||
@ -44,6 +45,14 @@ import org.jetbrains.exposed.sql.Database
|
|||||||
private const val enableAutoDeleteCommands = "captcha_auto_delete_commands_on"
|
private const val enableAutoDeleteCommands = "captcha_auto_delete_commands_on"
|
||||||
private const val disableAutoDeleteCommands = "captcha_auto_delete_commands_off"
|
private const val disableAutoDeleteCommands = "captcha_auto_delete_commands_off"
|
||||||
|
|
||||||
|
private const val enableSlotMachineCaptcha = "captcha_use_slot_machine"
|
||||||
|
private const val enableSimpleCaptcha = "captcha_use_simple"
|
||||||
|
private const val enableExpressionCaptcha = "captcha_use_expression"
|
||||||
|
|
||||||
|
private val changeCaptchaMethodCommandRegex = Regex(
|
||||||
|
"captcha_use_(slot_machine)|(simple)|expression"
|
||||||
|
)
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
class CaptchaBotPlugin : Plugin {
|
class CaptchaBotPlugin : Plugin {
|
||||||
override suspend fun getCommands(): List<BotCommand> = listOf(
|
override suspend fun getCommands(): List<BotCommand> = listOf(
|
||||||
@ -54,6 +63,18 @@ class CaptchaBotPlugin : Plugin {
|
|||||||
BotCommand(
|
BotCommand(
|
||||||
disableAutoDeleteCommands,
|
disableAutoDeleteCommands,
|
||||||
"Disable auto removing of commands addressed to captcha plugin"
|
"Disable auto removing of commands addressed to captcha plugin"
|
||||||
|
),
|
||||||
|
BotCommand(
|
||||||
|
enableSlotMachineCaptcha,
|
||||||
|
"Change captcha method to slot machine"
|
||||||
|
),
|
||||||
|
BotCommand(
|
||||||
|
enableSimpleCaptcha,
|
||||||
|
"Change captcha method to simple button"
|
||||||
|
),
|
||||||
|
BotCommand(
|
||||||
|
enableExpressionCaptcha,
|
||||||
|
"Change captcha method to expressions"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -86,6 +107,37 @@ class CaptchaBotPlugin : Plugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (adminsAPI != null) {
|
if (adminsAPI != null) {
|
||||||
|
onCommand(changeCaptchaMethodCommandRegex) {
|
||||||
|
val settings = it.chat.settings()
|
||||||
|
|
||||||
|
if (adminsAPI.sentByAdmin(it) != true) {
|
||||||
|
return@onCommand
|
||||||
|
}
|
||||||
|
if (settings.autoRemoveCommands) {
|
||||||
|
safelyWithoutExceptions { deleteMessage(it) }
|
||||||
|
}
|
||||||
|
val commands = it.parseCommandsWithParams()
|
||||||
|
val changeCommand = commands.keys.first {
|
||||||
|
changeCaptchaMethodCommandRegex.matches(it)
|
||||||
|
}
|
||||||
|
val captcha = when (changeCommand) {
|
||||||
|
enableSimpleCaptcha -> SimpleCaptchaProvider()
|
||||||
|
enableExpressionCaptcha -> ExpressionCaptchaProvider()
|
||||||
|
enableSlotMachineCaptcha -> SlotMachineCaptchaProvider()
|
||||||
|
else -> return@onCommand
|
||||||
|
}
|
||||||
|
val newSettings = settings.copy(captchaProvider = captcha)
|
||||||
|
if (repo.contains(it.chat.id)) {
|
||||||
|
repo.update(it.chat.id, newSettings)
|
||||||
|
} else {
|
||||||
|
repo.create(newSettings)
|
||||||
|
}
|
||||||
|
sendMessage(it.chat, "Settings updated").also { sent ->
|
||||||
|
delay(5000L)
|
||||||
|
deleteMessage(sent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onCommand(
|
onCommand(
|
||||||
enableAutoDeleteCommands,
|
enableAutoDeleteCommands,
|
||||||
requireOnlyCommandInMessage = false
|
requireOnlyCommandInMessage = false
|
||||||
|
Loading…
Reference in New Issue
Block a user