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_: