Does some tasks from #34
This commit is contained in:
@@ -24,6 +24,8 @@ async def cmd_warn(app: Client, msg: Message):
|
||||
"admin": msg.from_user.id,
|
||||
"date": datetime.now(),
|
||||
"reason": message,
|
||||
"active": True,
|
||||
"revoke_date": None,
|
||||
}
|
||||
)
|
||||
if message == "":
|
||||
|
@@ -23,7 +23,7 @@ async def cmd_warnings(app: Client, msg: Message):
|
||||
return
|
||||
|
||||
try:
|
||||
user_db = col_users.find_one({"user": int(msg.command[1])})
|
||||
user_db = col_users.find_one({"user": int(msg.command[1]), "active": True})
|
||||
target_id = user_db["user"]
|
||||
target_name = user_db["tg_name"]
|
||||
except:
|
||||
@@ -47,7 +47,7 @@ async def cmd_warnings(app: Client, msg: Message):
|
||||
)
|
||||
return
|
||||
|
||||
warns = col_warnings.count_documents({"user": target_id})
|
||||
warns = col_warnings.count_documents({"user": target_id, "active": True})
|
||||
|
||||
if warns == 0:
|
||||
await msg.reply_text(
|
||||
|
@@ -18,7 +18,12 @@ from pyrogram.enums.chat_members_filter import ChatMembersFilter
|
||||
from classes.holo_user import HoloUser
|
||||
from modules.utils import configGet, jsonLoad, jsonSave, locale, logWrite
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from modules.database import col_applications, col_sponsorships, col_youtube
|
||||
from modules.database import (
|
||||
col_applications,
|
||||
col_sponsorships,
|
||||
col_youtube,
|
||||
col_warnings,
|
||||
)
|
||||
from xmltodict import parse
|
||||
from requests import get
|
||||
|
||||
@@ -182,6 +187,45 @@ if configGet("enabled", "features", "sponsorships") is True:
|
||||
logWrite("Sponsorships check performed")
|
||||
|
||||
|
||||
# Revoke old warnings
|
||||
if configGet("enabled", "features", "warnings") is True:
|
||||
if configGet("enabled", "scheduler", "warnings_revocation") is True:
|
||||
|
||||
@scheduler.scheduled_job(
|
||||
trigger="date", run_date=datetime.now() + timedelta(seconds=10)
|
||||
)
|
||||
@scheduler.scheduled_job(
|
||||
trigger="interval",
|
||||
hours=configGet("interval", "scheduler", "warnings_revocation"),
|
||||
)
|
||||
async def revoke_warnings():
|
||||
for warning in list(
|
||||
col_warnings.find(
|
||||
{
|
||||
"active": True,
|
||||
"date": {"$lt": datetime.now() - timedelta(days=90)},
|
||||
}
|
||||
)
|
||||
):
|
||||
if (
|
||||
col_warnings.count_documents(
|
||||
{
|
||||
"user": warning["user"],
|
||||
"active": True,
|
||||
"date": {"$gt": datetime.now() - timedelta(days=90)},
|
||||
}
|
||||
)
|
||||
== 0
|
||||
):
|
||||
col_warnings.update_one(
|
||||
{"_id": warning["_id"]},
|
||||
{"$set": {"active": False, "revoke_date": datetime.now()}},
|
||||
)
|
||||
logWrite(
|
||||
f'Revoked warning {str(warning["_id"])} of user {warning["user"]} because no active warnings for the last 90 days found.'
|
||||
)
|
||||
|
||||
|
||||
# Register all bot commands
|
||||
@scheduler.scheduled_job(
|
||||
trigger="date", run_date=datetime.now() + timedelta(seconds=10)
|
||||
|
Reference in New Issue
Block a user