@@ -1,42 +1,70 @@
from aiogram import types , Dispatcher
from sqlalchemy . orm . session import close_all_sessions
from create_bot import bot , dp
from sqdb import user , session
from sqdb import user , session , DickRequest
import random
import traceback
from random import randint
import datetime
from dicktxt import ForReadDict
size_change = None
dick_plus = None
dick_minus = None
def top_dick_message ( delimiter , top_list ) :
message = f ' 🏆Топ 10 бубылд чата🏆 \n \n '
f ' 🚀 { delimiter . join ( map ( str , top_list [ 0 ] ) ) } \n '
f ' 💫 { delimiter . join ( map ( str , top_list [ 1 ] ) ) } \n '
f ' 🍆 { delimiter . join ( map ( str , top_list [ 2 ] ) ) } \n '
f ' 🍌 { delimiter . join ( map ( str , top_list [ 3 ] ) ) } \n '
f ' 🐍 { delimiter . join ( map ( str , top_list [ 4 ] ) ) } \n '
f ' 🐎 { delimiter . join ( map ( str , top_list [ 5 ] ) ) } \n '
f ' 🌭 { delimiter . join ( map ( str , top_list [ 6 ] ) ) } \n '
f ' 🌶 { delimiter . join ( map ( str , top_list [ 7 ] ) ) } \n '
f ' 👌 { delimiter . join ( map ( str , top_list [ 8 ] ) ) } \n '
f ' 💩 { delimiter . join ( map ( str , top_list [ 9 ] ) ) } \n '
return message
@dp.message_handler ( commands = [ " maintainance " ] )
async def stop_for_maintenance ( message : types . Message ) : # остановить бота
if message . from_user . id == 226765676 :
close_all_sessions ( ) # TODO Вспомнить, как это, блять, делается.
@dp.message_handler ( commands = [ " dick " ] )
async def up_dick ( message : types . Message ) :
# рандомайзер
numb = randint ( - 6 , 10 )
async def up_dick ( message : types . Message ) : # рандомайзер
numb = randint ( - 6 , 10 )
global size_change , dick_plus , dick_minus
dick_plus = ( ' <b>вырос</b> ' , ' <b>подрос</b> ' , ' <b>привстал</b> ' )
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 ) + ' ✂ '
size_change = random . choice ( dick_plus ) + ' 🚀 '
# if numb = 0 size_change = random.choice(const) TODO
else :
size_change = random . choice ( dick_minus ) + ' ✂ '
# работа с таблицей
try :
dick_request = DickRequest ( size_change = numb , date_changed = datetime . datetime . now ( ) )
b = session . query ( user ) . filter ( user . user_id == message . from_user . id ) . first ( )
if b :
last_time = b . datetimes
last_time = b . date_updated
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 :
print ( ' ошибка в if diff <=0 ' )
await bot . send_message ( message . chat . id , f ' @ { message . from_user . username } , '
f ' 🚫 вы уже крутили пипису, '
f ' е е размер <b> { current_dick } </b> см! ' )
except Exception as e :
print ( ' ошибка в if diff <=0 ' + " \n " . join ( traceback . format_tb ( e . __traceback__ ) ) )
session . rollback ( )
finally :
session . close_all ( )
@@ -44,49 +72,59 @@ async def up_dick(message: types.Message):
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 ( )
usr = session . query ( user )
a = usr . filter ( user . user_id == message . from_user . id ) . first ( ) # запрос на поиск в таблице
updated_dick = a . dick_size = ( a . dick_size + numb )
dick_request . user = a
a . date_updated = datetime . datetime . now ( )
session . add ( dick_request )
session . flush ( )
session . commit ( ) #обновляет запись
session . commit ( ) # обновляет запись
randomword = ForReadDict . RandomDick ( )
await bot . send_message ( message . chat . id , f ' @ { message . from_user . username } , ваш <em> { randomword } </em> { size_change } \
на <b> { abs ( numb ) } </b> см! \n \
Теперь он равен <b> { updetedDick } </b> см! ' )
except :
await bot . send_message ( message . chat . id , f ' @ { message . from_user . username } , '
f ' ваш <em> { randomword } </em> { size_change } '
f ' на <b> { abs ( numb ) } </b> см!\n '
f ' Теперь он равен <b> { updated_dick } </b> см! ' )
except Exception as e :
session . rollback ( )
print ( ' ошибка в обновлении пиписы ' )
print ( ' ошибка в обновлении пиписы, трейсбек-бек-бек: ' +
" \n " . join ( traceback . format_tb ( e . __traceback__ ) ) )
finally :
session . close_all ( )
print ( ' пиписа обновлена ' )
else :
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 )
int_table = user ( user_id = message . from_user . id ,
user_fullname = message . from_user . full_name ,
dick_size = numb ,
date_updated = datetime . datetime . now ( ) ,
date_created = datetime . datetime . now ( ) ,
chat_id = message . chat . id )
dick_request . user = int_table
session . add ( int_table )
session . add ( dick_request )
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> { numb } </b> см! ' )
except :
print ( ' ошибка в добавлении нового пользователя ' )
await bot . send_message ( message . chat . id , f ' @ { message . from_user . username } , '
f ' ваш писюн { size_change } \n '
f ' на <b> { abs ( numb ) } </b> см! \n '
f ' Теперь он равен <b> { numb } </b> см! ' )
except Exception as e :
print ( ' ошибка в добавлении нового пользователя, трейсбек: ' +
' \n ' . join ( traceback . format_tb ( e . __traceback__ ) ) )
session . rollback ( )
finally :
session . close_all ( )
print ( ' Успешно добавлен пользователь ' )
except :
except Exception as e :
session . rollback ( )
print ( ' ошибка в основном коде' )
print ( ' ошибка в основном коде, трейсбек: ' + ' \n ' . join ( traceback . format_tb ( e . __traceback__ ) ) )
finally :
session . close_all ( )
@@ -95,6 +133,7 @@ async def up_dick(message: types.Message):
async def send_topchat ( message : types . Message ) :
try :
changechat_id = session . query ( user ) . filter ( user . user_id == message . from_user . id ) . first ( )
delimiter = ' : '
chats = message . chat . id
if changechat_id . chat_id != chats :
changechat_id . chat_id = chats
@@ -102,72 +141,40 @@ async def send_topchat(message: types.Message):
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 = ' : '
users = session . query ( user . user_fullname , user . dick_size ) . order_by ( user . dick_size . desc ( ) )
top = users . filter ( user . chat_id == chats ) . limit ( 10 ) . all ( )
# проверка на длину списка, если меньше limit, то:
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 ' )
size_ len = len ( top )
if size_ len < 10 :
len_ minus = 10 - size_ len
top . extend ( ( ' - ' * len_ minus ) )
await bot . send_message ( message . chat . id , top_dick_message ( delimiter , top ) )
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 :
await bot . send_message ( message . chat . id , top_dick_message ( delimiter , top ) )
except Exception as e :
session . rollback ( )
print ( ' ошибка в /topdick' )
print ( ' ошибка в /topdick. Трейсбэк: \n ' + ' \n ' . join ( traceback . format_tb ( e . __traceback__ ) ) )
finally :
session . close_all ( )
@dp.message_handler ( commands = [ " globaldick " ] )
async def send_global_top ( message : types . Message ) :
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 :
await bot . send_message ( message . chat . id , top_dick_message ( delimiter , top_chat ) )
except Exception as e :
session . rollback ( )
print ( ' ошибка в /glov aldick' )
print ( ' ошибка в /glob aldick, трейсбэк: \n ' + ' \n ' . join ( traceback . format_tb ( e . __traceback__ ) ) )
finally :
session . close_all ( )
@@ -176,4 +183,3 @@ async def send_global_top(message: types.Message):
# dp.register_message_handler(up_dick)
# dp.register_message_handler(send_topchat)
# dp.register_message_handler(send_global_top)