From 505d90aea8b01f213217bc56665545b0400868b0 Mon Sep 17 00:00:00 2001 From: Simple_Not <44047940+moonbaseDelta@users.noreply.github.com> Date: Tue, 23 Jan 2024 12:45:44 +1000 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8C=D1=88=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20-=20=D0=BB=D1=83=D1=87=D1=88=D0=B5!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db_logic/__init__.py | 0 db_logic/collections.py | 18 +++++++++++++ db_logic/tops.py | 33 ++++++++++++++++++++++++ handlers/pipisa.py | 57 +++++++++-------------------------------- 4 files changed, 63 insertions(+), 45 deletions(-) create mode 100644 db_logic/__init__.py create mode 100644 db_logic/collections.py create mode 100644 db_logic/tops.py diff --git a/db_logic/__init__.py b/db_logic/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/db_logic/collections.py b/db_logic/collections.py new file mode 100644 index 0000000..839a938 --- /dev/null +++ b/db_logic/collections.py @@ -0,0 +1,18 @@ + +from global_conf import CONFIG + +#### https://docs.python-arango.com/en/main/ +from arango import ArangoClient + + + +def get_dicks_collection(): + arango_client = ArangoClient(hosts=CONFIG['databaso']['host'] ) + pipisa_db = arango_client.db( + CONFIG['databaso']['base'], + username=CONFIG['databaso']['user'], + password=CONFIG['databaso']['pass'] + ) + dicks_collection = pipisa_db.collection(CONFIG['databaso']['collection']) + + return dicks_collection \ No newline at end of file diff --git a/db_logic/tops.py b/db_logic/tops.py new file mode 100644 index 0000000..5e8cf41 --- /dev/null +++ b/db_logic/tops.py @@ -0,0 +1,33 @@ +from global_conf import CONFIG +from db_logic import collections + + +def get_tops(top_ = False, glob_ = False, chat_id = None): + + if top_: + try: + dicks = [d for d in collections.get_dicks_collection().find({'chat_id': chat_id}, skip=0, limit=1100)] + except Exception as e: + print('ошибка DB в /topdick') + print(e) + elif glob_: + try: + dicks = [d for d in collections.get_dicks_collection().all( ) if d['user_id'] != d['chat_id']] + except Exception as e: + print('ошибка DB в /globaldick') + print(e) + else: + print('вызывают хз что!') + + top_dicks = sorted(dicks, key=lambda dick: dick['dick_size'], reverse=True) + top_dicks = top_dicks[:( min(len(top_dicks), 10) )] + + dickos = '' + emo = ['🏆','🚀','🍆','🍌','🐍','🐎','🌭','🌶','👌','💩'] + + if len(top_dicks) > 0: + 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 + + return dickos diff --git a/handlers/pipisa.py b/handlers/pipisa.py index 2d0a8f9..fed00a3 100644 --- a/handlers/pipisa.py +++ b/handlers/pipisa.py @@ -8,30 +8,20 @@ from pipisa_functions import pipisa_time from global_conf import CONFIG -#### https://docs.python-arango.com/en/main/ -from arango import ArangoClient +from db_logic import tops +from db_logic import collections + admins = CONFIG['telegram_admins_ids'] -def get_dicks_collection(): - arango_client = ArangoClient(hosts=CONFIG['databaso']['host'] ) - pipisa_db = arango_client.db( - CONFIG['databaso']['base'], - username=CONFIG['databaso']['user'], - password=CONFIG['databaso']['pass'] - ) - dicks_collection = pipisa_db.collection(CONFIG['databaso']['collection']) - - return dicks_collection - @dp.message_handler(commands=["dick"]) async def up_dick(message: types.Message): if message.from_user.id in admins or message.chat.type != 'private': - dicks_collection = get_dicks_collection() + dicks_collection = collections.get_dicks_collection() #### TODO уплатить нолог с 100 см для самого нищего @@ -150,42 +140,19 @@ async def up_dick(message: types.Message): async def send_topchat(message: types.Message): if message.from_user.id in admins or message.chat.type != 'private': - top_ = False - glob_ = False - dicks_collection = get_dicks_collection() + top_ = message['text'].startswith('/topdick') + glob_ = message['text'].startswith('/globaldick') - if message['text'].statswith('/topdick'): - top_ = True - try: - 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) - elif message['text'].statswith('/globaldick'): - glob_ = True - try: - dicks = dicks_collection.all( ) - dicks = [d for d in dicks if d['user_id'] != d['chat_id']] - except Exception as e: - print('ошибка DB в /globaldick') - print(e) + if top_: + dickos = tops.get_tops( top_=True, chat_id=message.chat.id ) + elif glob_: + dickos = tops.get_tops( glob_=True ) else: - print('вызывают хз что!') - - top_dicks = sorted(dicks, key=lambda dick: dick['dick_size'], reverse=True) - top_dicks = top_dicks[:( min(len(top_dicks), 10) )] - - dickos = '' - emo = ['🏆','🚀','🍆','🍌','🐍','🐎','🌭','🌶','👌','💩'] + print('вызывают хз что!') - if len(top_dicks) == 0: + if not dickos: 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 - if top_: await bot.send_message(message.chat.id, '🏆Топ 10 бубылд чата🏆\n\n' + dickos) elif glob_: