Allow to set up custom ban duration via CAPTCHABOT_BAN_DURATION option (#204)

Co-authored-by: almost_random_username <gerogerigegege@localdomain>
pull/206/head
alex-pobeditel-2004 2024-10-20 20:09:49 +03:00 zatwierdzone przez GitHub
rodzic f2f30b8936
commit 77c3af4829
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
4 zmienionych plików z 20 dodań i 2 usunięć

1
.gitignore vendored
Wyświetl plik

@ -1,6 +1,7 @@
**/.vscode/
**/__pycache__/
**/data/
**/.idea/
**/*.pyc
**/*.pkl

Wyświetl plik

@ -220,6 +220,12 @@ CONST = {
int(os_getenv("CAPTCHABOT_MAX_FAIL_BAN_POLL",
SETTINGS["CAPTCHABOT_MAX_FAIL_BAN_POLL"])),
# Duration of ban (in seconds, negative values mean indefinite ban).
# Useful if you want to ban someone temporarily.
"BAN_DURATION":
int(os_getenv("CAPTCHABOT_BAN_DURATION",
SETTINGS["CAPTCHABOT_BAN_DURATION"])),
# Last session restorable RAM data backup file path
"F_SESSION": SCRIPT_PATH + "/session.pkl",

Wyświetl plik

@ -32,6 +32,9 @@ from asyncio import sleep as asyncio_sleep
# Collections Data Types Library
from collections import OrderedDict
# Date and Time Library
from datetime import datetime, timedelta, timezone
# JSON Library
from json import dumps as json_dumps
@ -873,7 +876,11 @@ async def captcha_fail_member_kick(bot, chat_id, user_id, user_name):
logger.info("[%s] Captcha Fail - Ban - %s (%s)",
chat_id, user_name, user_id)
# Try to ban the user and notify Admins
ban_result = await tlg_ban_user(bot, chat_id, user_id)
if CONST["BAN_DURATION"] >= 0:
ban_until_date = datetime.now(timezone.utc) + timedelta(seconds=CONST["BAN_DURATION"])
else:
ban_until_date = None
ban_result = await tlg_ban_user(bot, chat_id, user_id, until_date=ban_until_date)
if ban_result["error"] == "":
# Ban success
banned = True

Wyświetl plik

@ -168,5 +168,9 @@ SETTINGS = {
# Maximum number of times a user fail to solve a Poll captcha.
# If a user don't solve the captcha after this, it will be ban
# instead kick
"CAPTCHABOT_MAX_FAIL_BAN_POLL": 3
"CAPTCHABOT_MAX_FAIL_BAN_POLL": 3,
# Duration of ban (in seconds, negative values mean indefinite ban).
# Useful if you want to ban someone temporarily.
"CAPTCHABOT_BAN_DURATION": -1,
}