diff --git a/db_logic/user_stuff.py b/db_logic/user_stuff.py new file mode 100644 index 0000000..49eb5cd --- /dev/null +++ b/db_logic/user_stuff.py @@ -0,0 +1,86 @@ +from global_conf import CONFIG +from db_logic import collections + +import datetime + + +def store_new_user(dicks_collection, message, result ): + + try: + novenkiy = { + 'user_id': message.from_user.id, + 'user_fullname': message.from_user.full_name, + 'dick_size': result, + 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + 'attempts': 1, + 'chat_id': message.chat.id + } + metadata = dicks_collection.insert(novenkiy, overwrite_mode='update') + + print(f'Успешно добавлен нового пользователь @{message.from_user.username}') + except Exception as e2: + print(f'ошибка DB в /dick :: добавление нового пользователя @{message.from_user.username}') + print(e2) + + +def update_attempts(dicks_collection, message, user ): + try: + metadata = dicks_collection.insert( + { + '_key': user['_key'], ### этот нужен чтобы апдейт прилетал тому же юзеру + 'user_id': user['user_id'] , + 'user_fullname': message.from_user.full_name, + 'dick_size': user['dick_size'] , + 'datetimes': user['datetimes'] , + 'attempts': user['attempts'] + 1, + 'chat_id': message.chat.id + }, + overwrite_mode='update' + ) + print(f'Успешно апдейтнули попытку крутить пипису @{message.from_user.username}') + except Exception as e2: + print(f'ошибка DB в /dick :: обновление попытки крутить пипису @{message.from_user.username}') + print(e2) + + +def update_dick_size(dicks_collection, message, user, updatedDick ): + + try: + metadata = dicks_collection.insert( + { + '_key': user['_key'], ### этот нужен чтобы апдейт прилетал тому же юзеру + 'user_id': user['user_id'], + 'user_fullname': message.from_user.full_name, + 'dick_size': updatedDick, + 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + 'attempts': user['attempts'] + 1, + 'chat_id': message.chat.id + }, + overwrite_mode='update' + ) + print(f'Успешно апдейтнули пипису @{message.from_user.username}') + except Exception as e2: + print(f'ошибка DB в /dick :: обновление пиписы @{message.from_user.username}') + print(e2) + + +def get_user(dicks_collection, message): + try: + #### Чекнуть есть ли юзер в базе + candidate_cursor = dicks_collection.find( + { + 'user_id': message.from_user.id, + 'chat_id': message.chat.id + }, + skip = 0, + limit = 1488 + ) + if candidate_cursor.count() > 0: + user = candidate_cursor.pop() + else: + user = None + + return user + except Exception as e: + print('ошибка DB в /dick :: поиск юзера') + print(e) \ No newline at end of file diff --git a/handlers/pipisa.py b/handlers/pipisa.py index fed00a3..ac886a7 100644 --- a/handlers/pipisa.py +++ b/handlers/pipisa.py @@ -8,8 +8,7 @@ from pipisa_functions import pipisa_time from global_conf import CONFIG -from db_logic import tops -from db_logic import collections +from db_logic import collections, tops, user_stuff admins = CONFIG['telegram_admins_ids'] @@ -28,104 +27,51 @@ async def up_dick(message: types.Message): # рандомайзер result = randint(-9,10) - try: - #### Чекнуть есть ли юзер в базе - candidate_cursor = dicks_collection.find( - { - 'user_id': message.from_user.id, - 'chat_id': message.chat.id - }, - skip = 0, - limit = 1488 - ) - - if candidate_cursor.count() > 0: - ## Если есть то нарастить и отправить сообщение - user = candidate_cursor.pop() - if pipisa_time.rolltime(check_datetime=user['datetimes'], curr_time=datetime.datetime.now()): - # пришло время крутить!! - - updetedDick = user["dick_size"] + result - try: - metadata = dicks_collection.insert( - { - '_key': user['_key'], ### этот нужен чтобы апдейт прилетал тому же юзеру - 'user_id': user['user_id'], - 'user_fullname': message.from_user.full_name, - 'dick_size': updetedDick, - 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), - 'attempts': user['attempts'] + 1, - 'chat_id': message.chat.id - }, - overwrite_mode='update' - ) - print(f'Успешно апдейтнули пипису @{message.from_user.username}') - except Exception as e2: - print(f'ошибка в обновлении пиписы @{message.from_user.username}') - print(e2) - randomword = ForReadDict.RandomDick() - change_phrase = WordsChange.ChangeWord(result) + #### Чекнуть есть ли юзер в базе + user = user_stuff.get_user(dicks_collection, message) - await bot.send_message( message.chat.id, - f'@{message.from_user.username}, ваш {randomword} {change_phrase} на {abs(result)} см!\nТеперь он равен {updetedDick} см! ' - ) - else: - await bot.send_message( message.chat.id, - f'@{message.from_user.username}, 🚫 вы уже крутили пипису, ее размер {user["dick_size"]} см! ' - ) - - try: - metadata = dicks_collection.insert( - { - '_key': user['_key'], ### этот нужен чтобы апдейт прилетал тому же юзеру - 'user_id': user['user_id'] , - 'user_fullname': message.from_user.full_name, - 'dick_size': user['dick_size'] , - 'datetimes': user['datetimes'] , - 'attempts': user['attempts'] + 1, - 'chat_id': message.chat.id - }, - overwrite_mode='update' - ) - print(f'Успешно апдейтнули попытку крутить пипису @{message.from_user.username}') - except Exception as e2: - print(f'ошибка в обновлении попытки крутить пипису @{message.from_user.username}') - print(e2) + if user: + ## Если есть то нарастить и отправить сообщение - print(f'пользователь @{message.from_user.username} уже крутил') + if pipisa_time.rolltime(check_datetime=user['datetimes'], curr_time=datetime.datetime.now()): + # пришло время крутить!! - else: - ## если нету, то создать - - try: - novenkiy = { - 'user_id': message.from_user.id, - 'user_fullname': message.from_user.full_name, - 'dick_size': result, - 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), - 'attempts': 1, - 'chat_id': message.chat.id - } - metadata = dicks_collection.insert(novenkiy, overwrite_mode='update') + updatedDick = user["dick_size"] + result + user_stuff.store_new_user(dicks_collection, message, user, updatedDick) - if result > 0: - await bot.send_message( message.chat.id, - f'@{message.from_user.username}, ваш писюн показал головку 🚀\nна {abs(result)} см!\nТеперь он равен {result} см!' - ) - else: - await bot.send_message( message.chat.id, - f'@{message.from_user.username}, добро пожаловать в игру!🚀\nТы стартуешь не с лучшей позиции, природа наградила тебя всего {result} см 😬' - ) + randomword = ForReadDict.RandomDick() + change_phrase = WordsChange.ChangeWord(result) - print(f'Успешно добавлен пользователь @{message.from_user.username}') - except Exception as e1: - print('ошибка в добавлении нового пользователя') - print(e1) + await bot.send_message( message.chat.id, + f'@{message.from_user.username}, ваш {randomword} {change_phrase} на {abs(result)} см!\nТеперь он равен {updatedDick} см! ' + ) + else: + await bot.send_message( message.chat.id, + f'@{message.from_user.username}, 🚫 вы уже крутили пипису, ее размер {user["dick_size"]} см! ' + ) + + user_stuff.update_attempts(dicks_collection, message, user) - except Exception as e: - print('ошибка DB в /dick') - print(e) + print(f'пользователь @{message.from_user.username} уже крутил') + + else: + ## если нету, то создать + user_stuff.store_new_user(dicks_collection, message, result) + + if result > 0: + await bot.send_message( message.chat.id, + f'@{message.from_user.username}, ваш писюн показал головку 🚀\nна {abs(result)} см!\nТеперь он равен {result} см!' + ) + else: + await bot.send_message( message.chat.id, + f'@{message.from_user.username}, добро пожаловать в игру!🚀\nТы стартуешь не с лучшей позиции, природа наградила тебя всего {result} см 😬' + ) + + + # except Exception as e: + # print('ошибка DB в /dick') + # print(e) #### для всех отложенных сообщений ## проверить если прошло ?пять минут? с публикации @@ -144,9 +90,9 @@ async def send_topchat(message: types.Message): glob_ = message['text'].startswith('/globaldick') if top_: - dickos = tops.get_tops( top_=True, chat_id=message.chat.id ) + dickos = tops.get_tops( top_ = True, chat_id=message.chat.id ) elif glob_: - dickos = tops.get_tops( glob_=True ) + dickos = tops.get_tops( glob_ = True ) else: print('вызывают хз что!')