from aiogram import types, Dispatcher from create_bot import bot, dp import random from random import randint import datetime from dicktxt import ForReadDict 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/ from arango import ArangoClient admins = [317051301, 226765676] @dp.message_handler(commands=["dick"]) async def up_dick(message: types.Message): #global size_change, dick_plus, dick_minus if message.from_user.id in admins or message.chat.type != 'private': arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host') pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527') dicks_collection = pipisa_db.collection('dicks') 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 ## получение итогового результата pipisa_word = ForReadDict.RandomDick() change_word = change_words.ChangeWord(result) 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") 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 update_err: print(f'ошибка в обновлении пиписы @{message.from_user.username}') print(update_err) else: 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( { '_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 roll_err: print(f'ошибка в обновлении попытки крутить пипису @{message.from_user.username}') print(roll_err) print(f'пользователь @{message.from_user.username} уже крутил') else: ## если пользователь не найден то создаём ему запись в БД if result > 0: new_reply = await bot.send_message(message.chat.id, f'@\ {message.from_user.username}, ваш писюн показал головку 🚀\n\ на {abs(result)} см!\n\ Теперь он равен {result} см!') else: new_reply =await bot.send_message(message.chat.id, f'@\ {message.from_user.username}, добро пожаловать в игру!🚀\n\ Ты стартуешь не с лучшей позиции, природа наградила тебя всего {result} см 😬') user_operations.UserCreate(dicks_collection, message, result, new_reply.id) print(f'Успешно добавлен пользователь @{message.from_user.username}') except Exception as crit_err: print('ошибка DB в /dick') print(crit_err) else: await message.reply('Растить елду можно только в общих чатах!') @dp.message_handler(commands=["topdick"]) async def send_topchat(message: types.Message): # тело метода лучших результатов отдельной конфы if message.from_user.id in admins or message.chat.type != 'private': dickos = topdicks.topdicks_conf(message.chat.id) await bot.send_message(message.chat.id, '🏆Топ 10 бубылд чата🏆\n\n' + dickos) else: await message.reply('Работает только в общих чатах!\n'\ 'Вы мсжете посмотреть топ по миру: /globaldick') @dp.message_handler(commands=["globaldick"]) async def send_global_top(message: types.Message): # тело метода лучших результатов tops = topdicks.topdicks_global(message.chat.id,) await bot.send_message(message.chat.id, '🏆Топ 10 пипис в мире🏆\n\n' + tops)