From c3b6e560107004301098f7dab9c9b33d97213834 Mon Sep 17 00:00:00 2001 From: RakVhalate Date: Tue, 23 Jan 2024 06:33:53 +1000 Subject: [PATCH] #5 old posts delete function --- handlers/pipisa.py | 17 +++---- handlers/{post_cleaner => post_cleaner.py} | 52 ++++++++++------------ 2 files changed, 30 insertions(+), 39 deletions(-) rename handlers/{post_cleaner => post_cleaner.py} (77%) diff --git a/handlers/pipisa.py b/handlers/pipisa.py index d75c6f7..7736941 100644 --- a/handlers/pipisa.py +++ b/handlers/pipisa.py @@ -8,6 +8,7 @@ from dicktxt import change_words from pipisa_functions import pipisa_time from DBChat import user_operations from TopMsg import topdicks +from handlers import post_cleaner #### https://docs.python-arango.com/en/main/ @@ -50,16 +51,14 @@ async def up_dick(message: types.Message): pipisa_word = ForReadDict.RandomDick() change_word = change_words.ChangeWord(result) - - prev_enl_message_id = user["reply_id"] - await bot.delete_message(prev_enl_message_id) - enl_message = await bot.send_message(message.chat.id, f"@\ {message.from_user.username}, \ ваш {pipisa_word} ,{change_word(result)} на {abs(result)} см!\n\ \ Теперь он равен {updetedDick} см! ") + post_cleaner.cleanup_sequence(user['user_id'], enl_message.id, message.chat.id) + try: dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") @@ -71,9 +70,7 @@ async def up_dick(message: types.Message): 'dick_size': updetedDick, 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), 'attempts': user['attempts'] + 1, - 'chat_id': message.chat.id, - 'reply_id': enl_message.id - + 'chat_id': message.chat.id }, overwrite_mode='update' ) @@ -82,12 +79,11 @@ async def up_dick(message: types.Message): print(f'ошибка в обновлении пиписы @{message.from_user.username}') print(update_err) else: - - prev_err_message_id = user["reply_id"] ##удалить предыдущее сообщение - await bot.delete_message(prev_err_message_id) error_msg = await bot.send_message(message.chat.id, f'@\ {message.from_user.username},🚫 вы уже крутили пипису, \ ее размер {user["dick_size"]} см! ') + + post_cleaner.cleanup_sequence(user['user_id'], error_msg.id, error_msg.chat.id) try: metadata = dicks_collection.insert( @@ -99,7 +95,6 @@ async def up_dick(message: types.Message): 'datetimes': user['datetimes'] , 'attempts': user['attempts'] + 1, 'chat_id': message.chat.id, - 'reply_id': error_msg.id }, overwrite_mode='update' ) diff --git a/handlers/post_cleaner b/handlers/post_cleaner.py similarity index 77% rename from handlers/post_cleaner rename to handlers/post_cleaner.py index 4924a2e..f8e8215 100644 --- a/handlers/post_cleaner +++ b/handlers/post_cleaner.py @@ -13,43 +13,21 @@ def get_remove_collection(): 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): +async def cleanup_sequence(userID: int, messageID: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, + '_key': userID, 'chat_id': chatID }, skip=0, limit=1000) prev_enl_message_id = clean_candidate["messageID"] - await bot.delete_message(prev_enl_message_id) + await bot.delete_message(prev_enl_message_id) #delete last reply to this user - current_time = datetime.datetime.now() too_old = current_time-datetime.timedelta(min=5) old_posts = remove_collection.find( @@ -61,13 +39,31 @@ async def cleaner(userID:int, chatID:int): 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) + to_delete_UserId = old_Post['_key'] - #TODO: remove deleted posts ID's from DB + await bot.delete_message(to_delete_ID) #delete old message + old_posts.delete(to_delete_UserId) #delete old message DB entry except Exception as autoCleanErr: print(autoCleanErr) + #write last reply post ID to db + remove_collection = get_remove_collection + message_time = datetime.datetime.now() + + try: + lastReply = { + '_key': userID, + 'datetimes': message_time, + 'chat_id': chatID, + 'messageID': messageID + } + + metadata = remove_collection.insert(lastReply, overwrite_mode='update') #write last reply time + + except Exception as lastWriteErr: + print(lastWriteErr) + return 0