Spaces:
Sleeping
Sleeping
File size: 3,890 Bytes
aef1161 9c7de01 aef1161 9c7de01 aef1161 d5a4401 aef1161 9c7de01 aef1161 9c7de01 aef1161 9c7de01 aef1161 9c7de01 aef1161 9c7de01 7f19616 aef1161 7f19616 aef1161 1c016d9 aef1161 d5a4401 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
import time
from asyncio import sleep
from traceback import format_exc
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from pyrogram.enums import ChatMemberStatus as CMS
from pyrogram.errors import PeerIdInvalid, UserNotParticipant
from Powers import LOGGER, MESSAGE_DUMP, TIME_ZONE
from Powers.bot_class import Gojo
from Powers.database.approve_db import Approve
from Powers.database.blacklist_db import Blacklist
from Powers.database.chats_db import Chats
from Powers.database.disable_db import Disabling
from Powers.database.filters_db import Filters
from Powers.database.flood_db import Floods
from Powers.database.greetings_db import Greetings
from Powers.database.notes_db import Notes, NotesSettings
from Powers.database.pins_db import Pins
from Powers.database.reporting_db import Reporting
from Powers.database.users_db import Users
from Powers.database.warns_db import Warns, WarnSettings
from Powers.utils.custom_filters import command
from Powers.vars import Config
# scheduler = AsyncIOScheduler()
# scheduler.timezone = TIME_ZONE
async def clean_my_db(c:Gojo,is_cmd=False, id=None):
to_clean = list()
all_userss = Users.list_users()
chats_list = Chats.list_chats_by_id()
to_clean.clear()
start = time.time()
for chats in chats_list:
try:
stat = await c.get_chat_member(chat_id=chats,user_id=Config.BOT_ID)
if stat.status not in [CMS.MEMBER, CMS.ADMINISTRATOR, CMS.OWNER]:
to_clean.append(chats)
except UserNotParticipant:
to_clean.append(chats)
except Exception as e:
LOGGER.error(e)
LOGGER.error(format_exc())
return
for i in to_clean:
Approve(i).clean_approve()
Blacklist(i).clean_blacklist()
Chats.remove_chat(i)
Disabling(i).clean_disable()
Filters().rm_all_filters(i)
Floods().rm_flood(i)
Greetings(i).clean_greetings()
Notes().rm_all_notes(i)
NotesSettings().clean_notes(i)
Pins(i).clean_pins()
Reporting(i).clean_reporting()
Warns(i).clean_warn()
WarnSettings(i).clean_warns()
x = len(to_clean)
txt = f"#INFO\n\nCleaned db:\nTotal chats removed: {x}"
to_clean.clear()
LOGGER.info("Sleeping for 60 seconds")
await sleep(60)
LOGGER.info("Continuing the cleaning process")
all_users = [i["_id"] for i in all_userss]
for i in all_users:
try:
infos = await c.get_users(int(i))
except PeerIdInvalid:
try:
inn = await c.resolve_peer(int(i))
infos = await c.get_users(inn.user_id)
except KeyError:
to_clean.append(i)
Users(i).delete_user()
except Exception as e:
LOGGER.error(e)
LOGGER.error(format_exc())
return
except Exception as e:
LOGGER.error(e)
LOGGER.error(format_exc())
return
try:
if infos.is_deleted:
to_clean.append(infos.id)
Users(infos.id).delete_user()
else:
pass
except Exception:
pass
txt += f"\nTotal users removed: {len(to_clean)}"
to_clean.clear()
if is_cmd:
txt += f"\nClean type: Forced\nInitiated by: {(await c.get_users(user_ids=id)).mention}"
txt += f"\nClean type: Auto\n\tTook {time.time()-start-60} seconds to complete the process"
await c.send_message(chat_id=MESSAGE_DUMP,text=txt)
return txt
else:
txt += f"\nClean type: Auto\n\tTook {time.time()-start-60} seconds to complete the process"
await c.send_message(chat_id=MESSAGE_DUMP,text=txt)
return
# scheduler.add_job(clean_my_db,'cron',[Gojo()],hour=3,minute=0,second=0)
# scheduler.start()
|