From e93d2c0ef79e1be468aa62f7d0ad48ed8b665d92 Mon Sep 17 00:00:00 2001 From: Simple_Not <44047940+moonbaseDelta@users.noreply.github.com> Date: Wed, 12 Jul 2023 21:54:24 +1000 Subject: [PATCH] bring dick back. --- bot.py | 8 -- create_bot.py | 5 +- handlers/__init__.py | 4 +- handlers/davinci.py | 17 +-- handlers/pipisa.py | 311 +++++++++++++++++++++++-------------------- requairements.txt | 4 +- 6 files changed, 183 insertions(+), 166 deletions(-) diff --git a/bot.py b/bot.py index 722545f..23fda9f 100644 --- a/bot.py +++ b/bot.py @@ -1,20 +1,12 @@ import logging -import graypy - from aiogram import executor - from create_bot import dp - import handlers logging.basicConfig(level=logging.DEBUG) -logging.basicConfig( - level = logging.DEBUG, - handlers = [ graypy.GELFUDPHandler('localhost', 12201) ] -) # pipisa.register_handlers_pipisa(dp) # time_new_year.register_handlers_time(dp) diff --git a/create_bot.py b/create_bot.py index f79b11e..247163b 100644 --- a/create_bot.py +++ b/create_bot.py @@ -1,4 +1,7 @@ from aiogram import Bot, Dispatcher + + API_TOKEN = '5724991559:AAEuLvpLsgP6LHRGMSyFtQLlR5qPQUO4b_w' + bot = Bot(token=API_TOKEN, parse_mode="HTML") -dp = Dispatcher(bot) \ No newline at end of file +dp = Dispatcher(bot) \ No newline at end of file diff --git a/handlers/__init__.py b/handlers/__init__.py index b4d137b..fbd6506 100644 --- a/handlers/__init__.py +++ b/handlers/__init__.py @@ -1,7 +1,7 @@ from handlers import pipisa -from handlers import davinci +#from handlers import davinci #### токены рип from handlers import time_new_year -from handlers import sendalarm +#from handlers import sendalarm from handlers import start_help diff --git a/handlers/davinci.py b/handlers/davinci.py index 93c8aa2..494981e 100644 --- a/handlers/davinci.py +++ b/handlers/davinci.py @@ -9,15 +9,16 @@ openai.api_key = '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' async def send(message: types.Message): if 'тупица' in message.text.lower(): + ## TODO уточнить остатки токенов и денег response = openai.Completion.create( - model="text-davinci-003", - prompt=message.text[7:], - temperature=0.7, - max_tokens=1000, - top_p=1.0, - frequency_penalty=0.0, - presence_penalty=0.6, - stop=["сброс"] + model="text-davinci-003", + prompt=message.text[7:], + temperature=0.7, + max_tokens=1000, + top_p=1.0, + frequency_penalty=0.0, + presence_penalty=0.6, + stop=["сброс"] ) await message.reply(response['choices'][0]['text']) diff --git a/handlers/pipisa.py b/handlers/pipisa.py index c8ab10f..f1ad5af 100644 --- a/handlers/pipisa.py +++ b/handlers/pipisa.py @@ -1,181 +1,204 @@ from aiogram import types, Dispatcher -from sqlalchemy.orm.session import close_all_sessions +#from sqlalchemy.orm.session import close_all_sessions from create_bot import bot, dp -from sqdb import user, session +#from sqdb import user, session import random from random import randint import datetime from dicktxt import ForReadDict +from arango import ArangoClient + +#from arangodb_base import dicks_collection + @dp.message_handler(commands=["dick"]) async def up_dick(message: types.Message): -# рандомайзер - numb = randint(-6,10) - global size_change, dick_plus, dick_minus - dick_plus = ('вырос', 'подрос', 'привстал') - dick_minus = ('уменьшился', 'откусила злая гадюка', 'продали евреи, он стал дешевле') + #global size_change, dick_plus, dick_minus + + + arango_client = ArangoClient(hosts='https://arango.vdk2ch.ru') + pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527') + dicks_collection = pipisa_db.collection('dicks') + + + # рандомайзер + numb = randint(-9,10) + dick_plus = ( + 'вырос', + 'подрос', + 'привстал', + 'увеличился', + 'преисполнился' + ) + dick_minus = ( + 'неудачно потусил на сходке', + 'уменьшился', + 'откусила злая гадюка', + 'продали евреи, он стал дешевле' + ) + if numb > 0: - size_change = random.choice(dick_plus) + '🚀' + size_change = random.choice(dick_plus) + '🚀' #if numb = 0 size_change = random.choice(const) TODO - else: size_change = random.choice(dick_minus) + '✂' + else: + size_change = random.choice(dick_minus) + '✂' -# работа с таблицей try: - b = session.query(user).filter(user.user_id == message.from_user.id).first() - if b: - last_time = b.datetimes - now_time = datetime.datetime.now() - diff = now_time.day - last_time.day - - if abs(diff) <= 0: + #### Чекнуть есть ли юзер в базе + candidate_cursor = dicks_collection.find({'user_id': message.from_user.id}, skip=0, limit=1488) + + if candidate_cursor.count() > 0: + ## Если есть то нарастить и отправить сообщение + print(11111) + user = candidate_cursor.pop() + + print(user) + print(user['datetimes']) + + last_time = datetime.datetime.strptime(user['datetimes'], '%Y-%m-%d %H:%M:%S') + time_to_grow = datetime.datetime.now().replace(hour=14, minute=8, second=8, microsecond=0) + + if (time_to_grow - last_time).days > 0: + # прошло больше суток + + updetedDick = user["dick_size"] + numb try: - current_dick = b.dick_size - - - await bot.send_message(message.chat.id, f'@{message.from_user.username},🚫 вы уже крутили пипису, ее размер {current_dick} см! ') - except: - print('ошибка в if diff <=0') - session.rollback() - finally: - session.close_all() - print('пользователь уже крутил') - + # metadata = dicks_collection.update_match( + # {'user_id': message.from_user.id, 'chat_it': message.chat.id}, + # {'dick_size': updetedDick, 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")} + # ) + metadata = dicks_collection.insert( + { + '_key': user['_key'], + '_id': user['_id'], + '_rev': user['_rev'], + 'user_id': message.from_user.id, + 'user_fullname': user['user_fullname'], + 'dick_size': updetedDick, + 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + '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() + + + await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш {randomword} {size_change}\ +# на {abs(numb)} см!\n\ +# Теперь он равен {updetedDick} см! ') else: - try: - a = session.query(user).filter(user.user_id == message.from_user.id).first() # запрос на поиск в таблице - updetedDick = a.dick_size = (a.dick_size + numb) - a.datetimes = datetime.datetime.now() - session.flush() - session.commit() #обновляет запись - randomword = ForReadDict.RandomDick() - - await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш {randomword} {size_change}\ + await bot.send_message(message.chat.id, f'@{message.from_user.username},🚫 вы уже крутили пипису, ее размер {user["dick_size"]} см! ') + print(f'пользователь @{message.from_user.username} уже крутил') + + else: + ## если нету, то создать + + try: + novenkiy = { + 'user_id': message.from_user.id, + 'user_fullname': message.from_user.full_name, + 'dick_size': numb, + 'datetimes': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + 'chat_id': message.chat.id + } + + #### TODO проверить как-то по-умному что мы таки его добавили + metadata = dicks_collection.insert(novenkiy) + + + if numb > 0: + await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш писюн показал головку 🚀\n\ на {abs(numb)} см!\n\ -Теперь он равен {updetedDick} см! ') - except: - session.rollback() - print('ошибка в обновлении пиписы') - finally: - session.close_all() - print('пиписа обновлена') - +Теперь он равен {numb} см!') + else: + await bot.send_message(message.chat.id, f'@{message.from_user.username}, добро пожаловать в игру!🚀\n\ +Ты стартуешь не с лучшей позиции, природа наградила тебя всего: {abs(numb)} см 😬') - - else: - session.close() - try: - numb = randint(1,10) - - int_table = user(user_id = message.from_user.id, user_fullname = message.from_user.full_name, dick_size = numb, datetimes = datetime.datetime.now(),\ - chat_id = message.chat.id) - - session.add(int_table) - session.flush() - session.commit() - session.close() - - await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш писюн показал головку 🚀\n\ -на {abs(numb)} см!\n\ -Теперь он равен {numb} см!') - except: + + print(f'Успешно добавлен пользователь @{message.from_user.username}') + except Exception as e1: print('ошибка в добавлении нового пользователя') - session.rollback() - finally: - session.close_all() - print('Успешно добавлен пользователь') - - except: - session.rollback() - print('ошибка в основном коде') - finally: - session.close_all() + print(e1) + + + except Exception as e: + print('ошибка DB в /dick') + print(e) + + @dp.message_handler(commands=["topdick"]) async def send_topchat(message: types.Message): + + + arango_client = ArangoClient(hosts='https://arango.vdk2ch.ru') + pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527') + dicks_collection = pipisa_db.collection('dicks') + try: - changechat_id = session.query(user).filter(user.user_id == message.from_user.id).first() - chats = message.chat.id - if changechat_id.chat_id != chats: - changechat_id.chat_id = chats - session.commit() - session.close() - else: - session.close() - top = session.query(user.user_fullname, user.dick_size).order_by(user.dick_size.desc()).filter(user.chat_id == chats).limit(10).all() - delimiter = ': ' + dicks = dicks_collection.find({'chat_id': message.chat.id}, skip=0, limit=1100) + dicks = [d for d in dicks] + except Exception as e: + print('ошибка DB в /topdick') + print(e) - # проверка на длину списка, если меньше limit, то: + top_dicks = sorted(dicks, key=lambda dick: dick['dick_size'], reverse=True) + + dick_limit = min(len(top_dicks), 10) + top_dicks = top_dicks[:dick_limit] + + dickos = '' + emo = ['🏆','🚀','🍆','🍌','🐍','🐎','🌭','🌶','👌','💩'] - sizelen = len(top) - if sizelen < 10: - lenminus = 10 - sizelen - top.extend(('-'*lenminus)) - await bot.send_message(message.chat.id, f'🏆Топ 10 бубылд чата🏆\n\n\ - 🚀 {delimiter.join(map(str, top[0]))}\n\ - 💫 {delimiter.join(map(str, top[1]))}\n\ - 🍆 {delimiter.join(map(str, top[2]))}\n\ - 🍌 {delimiter.join(map(str, top[3]))}\n\ - 🐍 {delimiter.join(map(str, top[4]))}\n\ - 🐎 {delimiter.join(map(str, top[5]))}\n\ - 🌭 {delimiter.join(map(str, top[6]))}\n\ - 🌶 {delimiter.join(map(str, top[7]))}\n\ - 👌 {delimiter.join(map(str, top[8]))}\n\ - 💩 {delimiter.join(map(str, top[9]))}\n') - session.close() - # если все нормально и участников минимум 10 + if len(top_dicks) == 0: + await bot.send_message(message.chat.id, '🍆 Никто ничего не нарастил! 🍌') + else: + for i in range(len(top_dicks)): + dickos += f' {emo[i]} {i+1}. {top_dicks[i]["user_fullname"]}: {top_dicks[i]["dick_size"]}см\n' + i += 1 - else: - - await bot.send_message(message.chat.id, f'🏆Топ 10 бубылд чата🏆\n\n\ - 🚀 {delimiter.join(map(str, top[0]))}\n\ - 💫 {delimiter.join(map(str, top[1]))}\n\ - 🍆 {delimiter.join(map(str, top[2]))}\n\ - 🍌 {delimiter.join(map(str, top[3]))}\n\ - 🐍 {delimiter.join(map(str, top[4]))}\n\ - 🐎 {delimiter.join(map(str, top[5]))}\n\ - 🌭 {delimiter.join(map(str, top[6]))}\n\ - 🌶 {delimiter.join(map(str, top[7]))}\n\ - 👌 {delimiter.join(map(str, top[8]))}\n\ - 💩 {delimiter.join(map(str, top[9]))}\n') - except: - session.rollback() - print('ошибка в /topdick') - finally: - session.close_all() + await bot.send_message(message.chat.id, '🏆Топ 10 бубылд чата🏆\n\n' + dickos) + @dp.message_handler(commands=["globaldick"]) async def send_global_top(message: types.Message): + + + arango_client = ArangoClient(hosts='https://arango.vdk2ch.ru') + pipisa_db = arango_client.db('pipisa', username='root', password='stolendick527') + dicks_collection = pipisa_db.collection('dicks') + try: - top_chat = session.query(user.user_fullname, user.dick_size).order_by(user.dick_size.desc()).limit(10).all() - - delimiter = ': ' - - - await bot.send_message(message.chat.id, f'🏆Топ 10 пипис в мире🏆\n\n\ - 1. {delimiter.join(map(str, top_chat[0]))}\n\ - 2. {delimiter.join(map(str, top_chat[1]))}\n\ - 3. {delimiter.join(map(str, top_chat[2]))}\n\ - 4. {delimiter.join(map(str, top_chat[3]))}\n\ - 5. {delimiter.join(map(str, top_chat[4]))}\n\ - 6. {delimiter.join(map(str, top_chat[5]))}\n\ - 7. {delimiter.join(map(str, top_chat[6]))}\n\ - 8. {delimiter.join(map(str, top_chat[7]))}\n\ - 9. {delimiter.join(map(str, top_chat[8]))}\n\ - 10. {delimiter.join(map(str, top_chat[9]))}\n') - except: - session.rollback() - print('ошибка в /glovaldick') - finally: - session.close_all() + dicks = dicks_collection.all( ) + dicks = [d for d in dicks] + except Exception as e: + print('ошибка DB в /glovaldick') + print(e) + top_dicks = sorted(dicks, key=lambda dick: dick['dick_size'], reverse=True) + + dick_limit = min(len(top_dicks), 10) + top_dicks = top_dicks[:dick_limit] + + dickos = '' + emo = ['🏆','🚀','💫','🍆','🍌','🐍','🐎','🌭','🌶','👌'] -# def register_handlers_pipisa(dp: Dispatcher): -# dp.register_message_handler(up_dick) -# dp.register_message_handler(send_topchat) -# dp.register_message_handler(send_global_top) + if len(top_dicks) == 0: + await bot.send_message(message.chat.id, '🍆 Никто ничего не нарастил! 🍌') + else: + for i in range(len(top_dicks)): + dickos += f' {emo[i]} {i+1}. {top_dicks[i]["user_fullname"]}: {top_dicks[i]["dick_size"]}см\n' + i += 1 + + await bot.send_message(message.chat.id, '🏆Топ 10 пипис в мире🏆\n\n' + dickos) diff --git a/requairements.txt b/requairements.txt index b9082ae..4e1c440 100644 --- a/requairements.txt +++ b/requairements.txt @@ -1,4 +1,2 @@ aiogram -sqdb -sqlalchemy -graypy \ No newline at end of file +python-arango \ No newline at end of file