Compare commits
	
		
			62 Commits
		
	
	
		
			0.1.0-dev
			...
			4e128198b7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 4e128198b7 | ||
|  | 0cf7423806 | ||
|  | 28d0e6fdbf | ||
|  | 49ac3b7a48 | ||
|  | 2b7cbb0664 | ||
|  | bba000877e | ||
|  | 6c22fa72d1 | ||
|  | 1a6d0e7e91 | ||
|  | 9315a123f1 | ||
|  | 1f31c5155b | ||
|  | fc437530e4 | ||
|  | cbd8e13d79 | ||
|  | 8fc70c267d | ||
|  | f49233b811 | ||
|  | 3831d4e8d4 | ||
|  | 0278189ded | ||
|  | a842b3ae01 | ||
|  | d427d189b1 | ||
|  | 08cc6b40c1 | ||
|  | ba0867f662 | ||
|  | c764b71af0 | ||
|  | b9cd608d9b | ||
|  | 77b6293ea6 | ||
|  | 8c269fd768 | ||
|  | 256bdfb89b | ||
|  | b5903bf79f | ||
|  | 11ddb1536c | ||
|  | 19999b28ad | ||
|  | e8190a500d | ||
|  | 76d14126a1 | ||
|  | 345168aa80 | ||
|  | e2467803c5 | ||
|  | 489a3304a4 | ||
|  | 456d0619df | ||
|  | 360f8d4c55 | ||
|  | c39f1cde04 | ||
|  | 3f04de5cb1 | ||
|  | 53c48dbb44 | ||
|  | 361648f1c7 | ||
|  | 2de30513b2 | ||
|  | f46ba32473 | ||
|  | 8d599c239b | ||
|  | 9403350e15 | ||
|  | 9f27070585 | ||
|  | 40927b95cc | ||
|  | 460fccc6ab | ||
|  | 1e4e6fa4d6 | ||
|  | c4ca3a98a1 | ||
|  | 25e82e28d5 | ||
|  | e93d2c0ef7 | ||
|  | b673b43c93 | ||
|  | c02215574d | ||
|  | dea7805dff | ||
|  | 40abc7065d | ||
|  | c02458b209 | ||
| fe64756bc4 | |||
| 6923cd2aa8 | |||
| b73468c73f | |||
| 671c39be27 | |||
| b9813528b1 | |||
| 293d90fb29 | |||
| 9432f67ada | 
							
								
								
									
										11
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								.drone.yml
									
									
									
									
									
								
							| @@ -15,11 +15,18 @@ steps: | |||||||
| - name: test it first | - name: test it first | ||||||
|   commands: |   commands: | ||||||
|   - /usr/bin/python3 -m py_compile bot.py |   - /usr/bin/python3 -m py_compile bot.py | ||||||
|  |   - /usr/bin/python3 pipisa_functions/pipisa_time.py | ||||||
| - name: pull into the folduh | - name: pull into the folduh | ||||||
|   commands: |   commands: | ||||||
|   - cd /usr/share/$DRONE_REPO_NAME |   - cd /usr/share/$DRONE_REPO_NAME | ||||||
|   - git pull |   - su -c "git pull" jack | ||||||
|   - chown -R jack:jack . |   #- chown -R jack:jack . | ||||||
|  |   when: | ||||||
|  |     branch: | ||||||
|  |     - main | ||||||
| - name: restart systemd unit | - name: restart systemd unit | ||||||
|   commands: |   commands: | ||||||
|   - systemctl restart jack_bot |   - systemctl restart jack_bot | ||||||
|  |   when: | ||||||
|  |     branch: | ||||||
|  |     - main | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | Пробуем проверять что-либо.  | ||||||
|  |  | ||||||
|  | ```mermaid | ||||||
|  | journey | ||||||
|  |   title Пиписа | ||||||
|  |   section Наш Чат | ||||||
|  |     Оче больше пипис: 5: ГЕГЕМОН | ||||||
|  |     Обычно большепенис: 3: Догоняющие | ||||||
|  |     Скромный дик: 1: Отставшие | ||||||
|  |   section Не наш чат | ||||||
|  |     Не запустил: -1: Отставшие | ||||||
|  |     Не крутил: 1: Отставшие | ||||||
|  | ``` | ||||||
							
								
								
									
										0
									
								
								__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								bot.py
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								bot.py
									
									
									
									
									
								
							| @@ -1,20 +1,12 @@ | |||||||
| import logging | import logging | ||||||
| import graypy |  | ||||||
|  |  | ||||||
| from aiogram import executor | from aiogram import executor | ||||||
|  |  | ||||||
| from create_bot import dp | from create_bot import dp | ||||||
|  |  | ||||||
| import handlers | import handlers | ||||||
|  |  | ||||||
|  |  | ||||||
| logging.basicConfig(level=logging.DEBUG) | logging.basicConfig(level=logging.DEBUG) | ||||||
|  |  | ||||||
|  |  | ||||||
| logging.basicConfig( |  | ||||||
|     level    = logging.DEBUG, |  | ||||||
|     handlers = [ graypy.GELFUDPHandler('localhost', 12201) ] |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| # pipisa.register_handlers_pipisa(dp) | # pipisa.register_handlers_pipisa(dp) | ||||||
| # time_new_year.register_handlers_time(dp) | # time_new_year.register_handlers_time(dp) | ||||||
|   | |||||||
| @@ -1,4 +1,7 @@ | |||||||
| from aiogram import Bot, Dispatcher | from aiogram import Bot, Dispatcher | ||||||
|  |  | ||||||
|  |  | ||||||
| API_TOKEN = '5724991559:AAEuLvpLsgP6LHRGMSyFtQLlR5qPQUO4b_w' | API_TOKEN = '5724991559:AAEuLvpLsgP6LHRGMSyFtQLlR5qPQUO4b_w' | ||||||
|  |  | ||||||
| bot = Bot(token=API_TOKEN, parse_mode="HTML") | bot = Bot(token=API_TOKEN, parse_mode="HTML") | ||||||
| dp = Dispatcher(bot) | dp  = Dispatcher(bot) | ||||||
| @@ -1,7 +1,8 @@ | |||||||
|  |  | ||||||
| from handlers import pipisa | from handlers import pipisa | ||||||
| from handlers import davinci |  | ||||||
| from handlers import time_new_year |  | ||||||
| from handlers import sendalarm |  | ||||||
| from handlers import start_help | from handlers import start_help | ||||||
|  |  | ||||||
|  | from handlers import time_new_year | ||||||
|  | from handlers import sendalarm | ||||||
|  | from handlers import davinci  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,24 +2,44 @@ import openai | |||||||
| from aiogram import types, Dispatcher | from aiogram import types, Dispatcher | ||||||
| from create_bot import dp, bot | from create_bot import dp, bot | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| token = '5947963644:AAF_GKgMmU5ovqMpc1KXIpcf4aN0JMyKPqc' | token = '5947963644:AAF_GKgMmU5ovqMpc1KXIpcf4aN0JMyKPqc' | ||||||
| openai.api_key = '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' | #openai.api_key = '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' | ||||||
|  | openai.api_key = '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'  | ||||||
|  | ban_comands = ['/dick','/topdick'] | ||||||
|  |  | ||||||
| @dp.message_handler() | @dp.message_handler() | ||||||
| async def send(message: types.Message): | async def send(message: types.Message): | ||||||
|     if 'тупица' in message.text.lower(): |     if message.text.lower().startswith('тупица'): | ||||||
|  |  | ||||||
|  |         ## TODO уточнить остатки токенов и денег | ||||||
|         response = openai.Completion.create( |         response = openai.Completion.create( | ||||||
|         model="text-davinci-003", |             model="text-davinci-003", | ||||||
|         prompt=message.text[7:], |             prompt=message.text[7:], | ||||||
|         temperature=0.7, |             temperature=0.7, | ||||||
|         max_tokens=1000, |             max_tokens=1000, | ||||||
|         top_p=1.0, |             top_p=1.0, | ||||||
|         frequency_penalty=0.0, |             frequency_penalty=0.0, | ||||||
|         presence_penalty=0.6, |             presence_penalty=0.6, | ||||||
|         stop=["сброс"] |             stop=["сброс"] | ||||||
|  |         ) | ||||||
|  |         await message.reply(response['choices'][0]['text']) | ||||||
|  |  | ||||||
|  |     elif message.reply_to_message.from_user.is_bot: | ||||||
|  |         response = openai.Completion.create( | ||||||
|  |             model="text-davinci-003", | ||||||
|  |             prompt=message.text, | ||||||
|  |             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']) |         await message.reply(response['choices'][0]['text']) | ||||||
|          |          | ||||||
|          |          | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,179 +1,239 @@ | |||||||
| from aiogram import types, Dispatcher | 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 create_bot import bot, dp | ||||||
| from sqdb import user, session | #from sqdb import user, session | ||||||
| import random | import random | ||||||
| from random import randint | from random import randint | ||||||
| import datetime | import datetime | ||||||
| from dicktxt import ForReadDict | from dicktxt import ForReadDict | ||||||
|  | from pipisa_functions import pipisa_time | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #### https://docs.python-arango.com/en/main/ | ||||||
|  | from arango import ArangoClient | ||||||
|  |  | ||||||
|  | admins = [317051301, 226765676] | ||||||
|  |  | ||||||
|  |  | ||||||
| @dp.message_handler(commands=["dick"]) | @dp.message_handler(commands=["dick"]) | ||||||
| async def up_dick(message: types.Message): | async def up_dick(message: types.Message): | ||||||
| # рандомайзер |     #global size_change, dick_plus, dick_minus | ||||||
|     numb = randint(-6,10) |  | ||||||
|     global size_change, dick_plus, dick_minus |     if message.from_user.id in admins or message.chat.type != 'private': | ||||||
|     dick_plus  = ('<b>вырос</b>', '<b>подрос</b>', '<b>привстал</b>') |  | ||||||
|     dick_minus = ('<b>уменьшился</b>', '<b>откусила злая гадюка</b>', '<b>продали евреи, он стал дешевле</b>') |  | ||||||
|     if numb > 0: |  | ||||||
|          size_change  = random.choice(dick_plus) + '🚀' |  | ||||||
| 	#if numb = 0 size_change = random.choice(const)  TODO |  | ||||||
|     else: size_change = random.choice(dick_minus) + '✂' |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # работа с таблицей |         arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host')  | ||||||
|     try: |         pipisa_db     = arango_client.db('pipisa', username='root', password='stolendick527')  | ||||||
|         b = session.query(user).filter(user.user_id == message.from_user.id).first() |         dicks_collection = pipisa_db.collection('dicks')  | ||||||
|         if b: |  | ||||||
|             last_time = b.datetimes |  | ||||||
|             now_time = datetime.datetime.now() |  | ||||||
|             diff = now_time.day - last_time.day |  | ||||||
|              |  | ||||||
|             if abs(diff) <= 0: |  | ||||||
|                 try: |  | ||||||
|                     current_dick = b.dick_size |  | ||||||
|  |  | ||||||
|  |  | ||||||
|                     await bot.send_message(message.chat.id, f'@{message.from_user.username},🚫 вы уже крутили пипису, ее размер <b>{current_dick}</b> см! ') |         # рандомайзер | ||||||
|                 except: |         numb = randint(-9,10) | ||||||
|                     print('ошибка в if diff <=0') |         dick_plus  = ( | ||||||
|                     session.rollback()    |             '<b>вырос</b>', | ||||||
|                 finally:  |             '<b>подрос</b>', | ||||||
|                     session.close_all() |             '<b>привстал</b>', | ||||||
|                     print('пользователь уже крутил') |             '<b>увеличился</b>', | ||||||
|  |             '<b>преисполнился</b>' | ||||||
|  |         ) | ||||||
|  |         dick_minus = ( | ||||||
|  |             '<b>неудачно потусил на сходке</b>', | ||||||
|  |             '<b>уменьшился</b>', | ||||||
|  |             '<b>откусила злая гадюка</b>', | ||||||
|  |             '<b>продали евреи, он стал дешевле</b>', | ||||||
|  |             '<b>схуднул</b>' | ||||||
|  |         ) | ||||||
|  |         dick_stayed = ( | ||||||
|  |             '<b>продвинулся</b>', | ||||||
|  |             '<b>наноуменьшился</b>', | ||||||
|  |             '<b>зафиксировал прибыль</b>' | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |         if numb > 0: | ||||||
|  |             size_change  = random.choice(dick_plus) + '🚀' | ||||||
|  |         elif numb == 0: | ||||||
|  |             size_change  = random.choice(dick_stayed) + '🤨'  | ||||||
|  |         else:  | ||||||
|  |             size_change = random.choice(dick_minus) + '✂' | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         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"] + numb  | ||||||
|  |                     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 e2: | ||||||
|  |                         print(f'ошибка в обновлении пиписы @{message.from_user.username}') | ||||||
|  |                         print(e2)  | ||||||
|  |  | ||||||
|  |                     randomword  = ForReadDict.RandomDick() | ||||||
|  |  | ||||||
|             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}, ваш <em>{randomword}</em> {size_change}\ |                     await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш <em>{randomword}</em> {size_change}\ | ||||||
| на <b>{abs(numb)}</b> см!\n\ | на <b>{abs(numb)}</b> см!\n\ | ||||||
| Теперь он равен <b>{updetedDick}</b> см! ') | Теперь он равен <b>{updetedDick}</b> см! ') | ||||||
|                 except: |                 else: | ||||||
|                     session.rollback() |                     await bot.send_message(message.chat.id, f'@{message.from_user.username},🚫 вы уже крутили пипису, ее размер <b>{user["dick_size"]}</b> см! ') | ||||||
|                     print('ошибка в обновлении пиписы') |                      | ||||||
|                 finally: |                     try: | ||||||
|                     session.close_all() |                         metadata = dicks_collection.insert( | ||||||
|                     print('пиписа обновлена') |                             { | ||||||
|  |                                 '_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)  | ||||||
|  |  | ||||||
|  |                     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"), | ||||||
|  |                         'attempts':      1, | ||||||
|  |                         'chat_id':       message.chat.id | ||||||
|  |                     } | ||||||
|  |      | ||||||
|  |                     metadata = dicks_collection.insert(novenkiy, overwrite_mode='update') | ||||||
|                  |                  | ||||||
|  |  | ||||||
|  |                     if numb > 0: | ||||||
|         else: |                         await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш писюн показал головку 🚀\n\ | ||||||
|             session.close() |  | ||||||
|             try: |  | ||||||
|                 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}, ваш писюн {size_change}\n\ |  | ||||||
| на <b>{abs(numb)}</b> см!\n\ | на <b>{abs(numb)}</b> см!\n\ | ||||||
| Теперь он равен <b>{numb}</b> см!')  | Теперь он равен <b>{numb}</b> см!')  | ||||||
|             except: |                     else: | ||||||
|                 print('ошибка в добавлении нового пользователя') |                         await bot.send_message(message.chat.id, f'@{message.from_user.username}, добро пожаловать в игру!🚀\n\ | ||||||
|                 session.rollback() | Ты стартуешь не с лучшей позиции, природа наградила тебя всего <b>{numb}</b> см 😬') | ||||||
|             finally: |                          | ||||||
|                 session.close_all() |                          | ||||||
|                 print('Успешно добавлен пользователь') |                     print(f'Успешно добавлен пользователь @{message.from_user.username}') | ||||||
|  |                 except Exception as e1: | ||||||
|  |                     print('ошибка в добавлении нового пользователя') | ||||||
|  |                     print(e1)  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         except Exception as e:  | ||||||
|  |             print('ошибка DB в /dick') | ||||||
|  |             print(e) | ||||||
|  |     else: | ||||||
|  |         await message.reply('Растить елду можно только в общих чатах!') | ||||||
|  |  | ||||||
|  |   | ||||||
|   |   | ||||||
|     except: |  | ||||||
|         session.rollback() |  | ||||||
|         print('ошибка в основном коде') |  | ||||||
|     finally: |  | ||||||
|         session.close_all() |  | ||||||
|          |          | ||||||
|      |      | ||||||
| @dp.message_handler(commands=["topdick"]) | @dp.message_handler(commands=["topdick"]) | ||||||
| async def send_topchat(message: types.Message): | async def send_topchat(message: types.Message): | ||||||
|     try: |     if message.from_user.id in admins or message.chat.type != 'private': | ||||||
|         changechat_id = session.query(user).filter(user.user_id == message.from_user.id).first() |  | ||||||
|         chats = message.chat.id  |         arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host')  | ||||||
|         if changechat_id.chat_id != chats: |         pipisa_db     = arango_client.db('pipisa', username='root', password='stolendick527')  | ||||||
|             changechat_id.chat_id = chats |         dicks_collection = pipisa_db.collection('dicks')  | ||||||
|             session.commit() |  | ||||||
|             session.close() |         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) | ||||||
|  |  | ||||||
|  |         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    = ['🏆','🚀','🍆','🍌','🐍','🐎','🌭','🌶','👌','💩'] | ||||||
|  |  | ||||||
|  |         if len(top_dicks) == 0: | ||||||
|  |             await bot.send_message(message.chat.id, '🍆 Никто ничего не нарастил! 🍌') | ||||||
|         else: |         else: | ||||||
|             session.close() |             for i in range(len(top_dicks)):  | ||||||
|             top = session.query(user.user_fullname, user.dick_size).order_by(user.dick_size.desc()).filter(user.chat_id == chats).limit(10).all() |                 dickos += f'     {emo[i]} {i+1}. {top_dicks[i]["user_fullname"]}: {top_dicks[i]["dick_size"]}см\n' | ||||||
|             delimiter = ': ' |                 i += 1 | ||||||
|  |  | ||||||
|     # проверка на длину списка, если меньше limit, то: |             await bot.send_message(message.chat.id, '🏆Топ 10 бубылд чата🏆\n\n' + dickos) | ||||||
|  |     else: | ||||||
|  |         await message.reply('Работает только в общих чатах!\n'\ | ||||||
|  |                             'Вы мсжете посмотреть топ по миру /globaldick') | ||||||
|  |  | ||||||
|         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 |  | ||||||
|  |  | ||||||
|         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() |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @dp.message_handler(commands=["globaldick"]) | @dp.message_handler(commands=["globaldick"]) | ||||||
| async def send_global_top(message: types.Message): | async def send_global_top(message: types.Message): | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host')  | ||||||
|  |     pipisa_db     = arango_client.db('pipisa', username='root', password='stolendick527')  | ||||||
|  |     dicks_collection = pipisa_db.collection('dicks')  | ||||||
|  |  | ||||||
|     try: |     try: | ||||||
|         top_chat = session.query(user.user_fullname, user.dick_size).order_by(user.dick_size.desc()).limit(10).all() |         dicks = dicks_collection.all( )  | ||||||
|  |         dicks = [d for d in dicks if d['user_id'] != d['chat_id']] | ||||||
|  |     except Exception as e:  | ||||||
|  |         print('ошибка DB в /glovaldick') | ||||||
|  |         print(e) | ||||||
|  |  | ||||||
|         delimiter = ': ' |     top_dicks  = sorted(dicks, key=lambda dick: dick['dick_size'], reverse=True) | ||||||
|      |      | ||||||
|  |  | ||||||
|         await bot.send_message(message.chat.id, f'🏆Топ 10 пипис в мире🏆\n\n\ |     dick_limit = min(len(top_dicks), 10) | ||||||
|     1. {delimiter.join(map(str, top_chat[0]))}\n\ |     top_dicks  = top_dicks[:dick_limit] | ||||||
|     2. {delimiter.join(map(str, top_chat[1]))}\n\ |  | ||||||
|     3. {delimiter.join(map(str, top_chat[2]))}\n\ |     dickos = '' | ||||||
|     4. {delimiter.join(map(str, top_chat[3]))}\n\ |     emo    = ['🏆','🚀','💫','🍆','🍌','🐍','🐎','🌭','🌶','👌'] | ||||||
|     5. {delimiter.join(map(str, top_chat[4]))}\n\ |  | ||||||
|     6. {delimiter.join(map(str, top_chat[5]))}\n\ |     if len(top_dicks) == 0: | ||||||
|     7. {delimiter.join(map(str, top_chat[6]))}\n\ |         await bot.send_message(message.chat.id, '🍆 Никто ничего не нарастил! 🍌') | ||||||
|     8. {delimiter.join(map(str, top_chat[7]))}\n\ |     else: | ||||||
|     9. {delimiter.join(map(str, top_chat[8]))}\n\ |         for i in range(len(top_dicks)):  | ||||||
|     10. {delimiter.join(map(str, top_chat[9]))}\n') |             dickos += f'     {emo[i]} {i+1}. {top_dicks[i]["user_fullname"]}: {top_dicks[i]["dick_size"]}см\n' | ||||||
|     except: |             i += 1 | ||||||
|         session.rollback() |  | ||||||
|         print('ошибка в /glovaldick') |         await bot.send_message(message.chat.id, '🏆Топ 10 пипис в мире🏆\n\n' + dickos) | ||||||
|     finally: |  | ||||||
|         session.close_all() |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # 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) |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,11 +12,11 @@ async def sendall(message: types.Message): | |||||||
|         if message.from_user.id == 226765676: |         if message.from_user.id == 226765676: | ||||||
|             text = message.text[9:] |             text = message.text[9:] | ||||||
|             try: |             try: | ||||||
|                 chats_id = session.query(user.chat_id).distinct() |                 chats_id = -1001355646177 | ||||||
|                 for row in chats_id: |                  | ||||||
|                     try: |                 try: | ||||||
|                         await bot.send_message(row[0], text) |                     await bot.send_message(chats_id, text) | ||||||
|                     except: |                 except: | ||||||
|                         print('вероятно бота нет в чате') |                         print('вероятно бота нет в чате') | ||||||
|                 await bot.send_message(message.from_user.id, 'Сообщение успешно отправлено во все чаты') |                 await bot.send_message(message.from_user.id, 'Сообщение успешно отправлено во все чаты') | ||||||
|             except:  |             except:  | ||||||
|   | |||||||
| @@ -1,22 +1,27 @@ | |||||||
| from aiogram import types, Dispatcher | from aiogram import types, Dispatcher | ||||||
|  | from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton | ||||||
| from create_bot import dp, bot | from create_bot import dp, bot | ||||||
|  |  | ||||||
| @dp.message_handler(commands=['start']) | @dp.message_handler(commands=['start']) | ||||||
| async def start_func(message: types.Message): | async def start_func(message: types.Message): | ||||||
|     await message.reply('похуй') |     if message.chat.type == 'private': | ||||||
|  |          | ||||||
|  |         lkb = InlineKeyboardMarkup(row_width=1).add(InlineKeyboardButton(text = 'Добавить в группу', callback_data='add_2_group')) | ||||||
|  |  | ||||||
|  |         await message.answer(f'<b>Добро пожаловать, {message.from_user.full_name}!</b>\n' | ||||||
|  |                              'Это бот, который растит члены. Чтобы начать, добавь бота в чат'\ | ||||||
|  |                              , reply_markup=lkb | ||||||
|  |                                                     | ||||||
|  |                             ) | ||||||
|  | # TODO добавить кнопку, по которой смогут добавлять юзера в чат | ||||||
|  |          | ||||||
|  | @dp.callback_query_handler(text = 'add_2_group') | ||||||
|  | async def addgroup(callback: types.CallbackQuery): | ||||||
|  |     await callback.answer('жмав')  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
| @dp.message_handler(commands=['photo']) |  | ||||||
| async def send_image(message: types.Message): |  | ||||||
|     await bot.send_photo(message.chat.id, photo='https://memepedia.ru/wp-content/uploads/2018/08/ya-pidoras.jpg', reply_to_message_id=message.message_id) |  | ||||||
|  |  | ||||||
| @dp.message_handler(content_types=types.ContentTypes.TEXT) |  | ||||||
| async def send_faggot(message: types.Message): |  | ||||||
|     print(message.text)  |  | ||||||
|     if message.text == 'хто я': |  | ||||||
|      await bot.send_photo(message.chat.id, photo='https://www.meme-arsenal.com/memes/ecebd2339c7eab40e09874bd86a38a09.jpg') |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def register_handlers_StartHelp(dp: Dispatcher): |  | ||||||
|     dp.register_message_handler(start_func) |  | ||||||
|     dp.register_message_handler(send_faggot) |  | ||||||
|     dp.register_message_handler(send_image) |  | ||||||
| @@ -4,7 +4,7 @@ import datetime | |||||||
|  |  | ||||||
| @dp.message_handler(commands=["time"]) | @dp.message_handler(commands=["time"]) | ||||||
| async def send_time(message: types.Message): | async def send_time(message: types.Message): | ||||||
|     new_year = datetime.datetime(2022, 12, 31) #дата нового года |     new_year = datetime.datetime(2024, 12, 31) #дата нового года | ||||||
|     ct = datetime.datetime.now() #датавремя |     ct = datetime.datetime.now() #датавремя | ||||||
|     cd = datetime.datetime.now().strftime("%d/%m/%Y") #дата (д,м,г) |     cd = datetime.datetime.now().strftime("%d/%m/%Y") #дата (д,м,г) | ||||||
|     ct1 = ct+datetime.timedelta(hours=15) # +14 часов от сервера |     ct1 = ct+datetime.timedelta(hours=15) # +14 часов от сервера | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								pipisa_functions/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pipisa_functions/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | from . import pipisa_time | ||||||
							
								
								
									
										88
									
								
								pipisa_functions/pipisa_time.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								pipisa_functions/pipisa_time.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | |||||||
|  |  | ||||||
|  | import unittest | ||||||
|  | import datetime | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def rolltime(check_datetime , curr_time=datetime.datetime.now()): | ||||||
|  |  | ||||||
|  |     last_time    = datetime.datetime.strptime(check_datetime, '%Y-%m-%d %H:%M:%S') | ||||||
|  |     time_to_grow = curr_time.replace(hour=14, minute=8, second=8, microsecond=0) #+ datetime.timedelta(days=0) | ||||||
|  |  | ||||||
|  |     timediff = (time_to_grow - last_time).total_seconds() | ||||||
|  |  | ||||||
|  |     # print() | ||||||
|  |     # print(f'\tlast_time : {last_time}') | ||||||
|  |     # print(f'\ttime_to_grow : {time_to_grow}') | ||||||
|  |     # print(f'\tcurr_time : {curr_time.strftime("%Y-%m-%d %H:%M:%S")}') | ||||||
|  |     # print(f'\t\tsecs diff : {timediff}') | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     if timediff > 86400 or (curr_time > time_to_grow and last_time < time_to_grow): | ||||||
|  |         return True | ||||||
|  |     else: | ||||||
|  |         return False | ||||||
|  |   | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestPipisa(unittest.TestCase): | ||||||
|  |     def test_very_long_ago(self):  | ||||||
|  |         self.assertEqual(rolltime('2021-10-11 23:44:00'), True, "Пиписа прокручена очень давно. Очевидный прокрут") | ||||||
|  |  | ||||||
|  |     def test_just_after(self):  | ||||||
|  |         self.assertEqual(rolltime( | ||||||
|  |             datetime.datetime.now().replace(hour=14, minute=9, second=8, microsecond=0).strftime('%Y-%m-%d %H:%M:%S') | ||||||
|  |             ), False, "Попытка крутить когда старый прокрут был через 1 минуту после сегодняшнего обновления роллов. Фейл.") | ||||||
|  |  | ||||||
|  |     def test_yesterdayroll(self):  | ||||||
|  |         self.assertEqual( | ||||||
|  |             rolltime( | ||||||
|  |                 (  | ||||||
|  |                     datetime.datetime.now().replace(hour=14, minute=9, second=8, microsecond=0) - datetime.timedelta(days=1)  | ||||||
|  |                 ).strftime('%Y-%m-%d %H:%M:%S'), | ||||||
|  |                 datetime.datetime.now().replace(hour=14, minute=9, second=8, microsecond=0) | ||||||
|  |             ), True, "Крутилась вчера через минуту после обновления роллов. Должно пропускать ") | ||||||
|  |          | ||||||
|  |          | ||||||
|  |     def test_hour_before_roll(self):  | ||||||
|  |         self.assertEqual( | ||||||
|  |             rolltime( | ||||||
|  |                 (  | ||||||
|  |                     datetime.datetime.now().replace(hour=14, minute=9, second=8, microsecond=0) - datetime.timedelta(hours=1) | ||||||
|  |                 ).strftime('%Y-%m-%d %H:%M:%S'), | ||||||
|  |                 datetime.datetime.now().replace(hour=14, minute=9, second=8, microsecond=0) | ||||||
|  |             ), True, "Крутилась последний раз за час до прокрута. Надо разрешать заново!") | ||||||
|  |          | ||||||
|  |     def test_after_midnight(self):  | ||||||
|  |         self.assertEqual( | ||||||
|  |             rolltime( | ||||||
|  |                 (  | ||||||
|  |                     datetime.datetime.now().replace(hour=14, minute=9, second=8, microsecond=0) - datetime.timedelta(hours=14)  | ||||||
|  |                 ).strftime('%Y-%m-%d %H:%M:%S'), | ||||||
|  |                 datetime.datetime.now().replace(hour=0, minute=11, second=8, microsecond=0) | ||||||
|  |             ), False, "Где-то ночью прокручивается повторно. Фейл.") | ||||||
|  |          | ||||||
|  |     def test_before_midnight(self):  | ||||||
|  |         self.assertEqual( | ||||||
|  |             rolltime( | ||||||
|  |                 (  | ||||||
|  |                     datetime.datetime.now().replace(hour=14, minute=9, second=8, microsecond=0) - datetime.timedelta(hours=15)  | ||||||
|  |                 ).strftime('%Y-%m-%d %H:%M:%S'), | ||||||
|  |                 datetime.datetime.now().replace(hour=0, minute=11, second=8, microsecond=0) - datetime.timedelta(hours=15)  | ||||||
|  |             ), False, "Где-то ночью прокручивается повторно. Фейл.") | ||||||
|  |          | ||||||
|  |     def test_somewhere_after(self):  | ||||||
|  |         self.assertEqual( | ||||||
|  |             rolltime( | ||||||
|  |                 (  | ||||||
|  |                     datetime.datetime.now().replace(hour=14, minute=26, second=8, microsecond=0)   | ||||||
|  |                 ).strftime('%Y-%m-%d %H:%M:%S'), | ||||||
|  |                 datetime.datetime.now().replace(hour=14, minute=27, second=8, microsecond=0) | ||||||
|  |             ), False, "Сегодня уже открутили а хотят ещё. Фейл.") | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     unittest.main(verbosity=2) | ||||||
| @@ -1,4 +1,2 @@ | |||||||
| aiogram | aiogram | ||||||
| sqdb | python-arango | ||||||
| sqlalchemy |  | ||||||
| graypy |  | ||||||
		Reference in New Issue
	
	Block a user