diff --git a/handlers/post_cleaner b/handlers/post_cleaner new file mode 100644 index 0000000..4924a2e --- /dev/null +++ b/handlers/post_cleaner @@ -0,0 +1,73 @@ +import datetime +from arango import ArangoClient +from create_bot import bot + +def get_remove_collection(): + arango_client = ArangoClient(hosts=CONFIG['databaso']['host'] ) + pipisa_db = arango_client.db( + CONFIG['databaso']['base'], + username=CONFIG['databaso']['user'], + password=CONFIG['databaso']['pass'] + ) + remove_collection = pipisa_db.collection(CONFIG['databaso']['deleteCollection']) + + return remove_collection + + + +def time_writer(userID: int, messageID:int, chatID:int): + #write last reply post ID to db + remove_collection = get_remove_collection + message_time = datetime.datetime.now() + + try: + lastReply = { + 'user_id': userID, + 'datetimes': message_time, + 'chat_id': chatID, + 'messageID': messageID + } + + metadata = remove_collection.insert(lastReply, overwrite_mode='update') + + except Exception as lastWriteErr: + print(lastWriteErr) + + return 0 + +async def cleaner(userID:int, chatID:int): + #remove last reply and check posts older than 5 minutes to delete + remove_collection = get_remove_collection + try: + clean_candidate = remove_collection.find( + { + 'user_id': userID, + 'chat_id': chatID + }, + skip=0, limit=1000) + + prev_enl_message_id = clean_candidate["messageID"] + await bot.delete_message(prev_enl_message_id) + + + current_time = datetime.datetime.now() + too_old = current_time-datetime.timedelta(min=5) + old_posts = remove_collection.find( + { + 'chat_id': chatID, + }, + skip=0, limit=1000) + + for old_Post in old_posts: + if old_Post["datetimes"] <= too_old: + to_delete_ID = old_Post["messageID"] + await bot.delete_message(to_delete_ID) + + #TODO: remove deleted posts ID's from DB + + + except Exception as autoCleanErr: + print(autoCleanErr) + + return 0 +