forked from Pavel_Durov/python_bot
отпилен хуй от пользователей, вынесен в автономию
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from aiogram import types, Dispatcher
|
||||
from aiogram import types
|
||||
from sqlalchemy.orm.session import close_all_sessions
|
||||
from create_bot import bot, dp
|
||||
from sqdb import user, session, DickRequest
|
||||
from sqdb import User, session, DickRequest, UserDick
|
||||
import random
|
||||
import traceback
|
||||
from random import randint
|
||||
@@ -13,6 +13,10 @@ dick_plus = None
|
||||
dick_minus = None
|
||||
|
||||
|
||||
def get_dick(user_id, chat_id):
|
||||
dick = session.query(UserDick).filter(UserDick.user_id == user_id, UserDick.chat_id == chat_id).first()
|
||||
return dick
|
||||
|
||||
def top_dick_message(delimiter, top_list):
|
||||
message = f'🏆Топ 10 бубылд чата🏆\n\n'
|
||||
f'🚀 {delimiter.join(map(str, top_list[0]))}\n'
|
||||
@@ -28,10 +32,12 @@ def top_dick_message(delimiter, top_list):
|
||||
return message
|
||||
|
||||
|
||||
@dp.message_handler(commands=["maintainance"])
|
||||
@dp.message_handler(commands=["maintenance"])
|
||||
async def stop_for_maintenance(message: types.Message): # остановить бота
|
||||
if message.from_user.id == 226765676:
|
||||
close_all_sessions() # TODO Вспомнить, как это, блять, делается.
|
||||
bot.send_message(message.from_user.id, "Блять. Как же больно. Мне холодно. Наверное это конец...")
|
||||
close_all_sessions()
|
||||
dp.stop_polling()
|
||||
|
||||
|
||||
@dp.message_handler(commands=["dick"])
|
||||
@@ -51,7 +57,7 @@ async def up_dick(message: types.Message): # рандомайзер
|
||||
# работа с таблицей
|
||||
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()
|
||||
b = session.query(User).filter(User.user_id == message.from_user.id).first()
|
||||
if b:
|
||||
last_time = b.date_updated
|
||||
now_time = datetime.datetime.now()
|
||||
@@ -72,9 +78,10 @@ async def up_dick(message: types.Message): # рандомайзер
|
||||
|
||||
else:
|
||||
try:
|
||||
usr = session.query(user)
|
||||
a = usr.filter(user.user_id == message.from_user.id).first() # запрос на поиск в таблице
|
||||
updated_dick = a.dick_size = (a.dick_size + numb)
|
||||
usr = session.query(User)
|
||||
a = usr.filter(User.user_id == message.from_user.id).first() # запрос на поиск в таблице
|
||||
dick = get_dick(User.user_id, message.chat.id)
|
||||
updated_dick = dick.dick_size = (dick.dick_size + numb)
|
||||
dick_request.user = a
|
||||
a.date_updated = datetime.datetime.now()
|
||||
session.add(dick_request)
|
||||
@@ -97,15 +104,17 @@ async def up_dick(message: types.Message): # рандомайзер
|
||||
else:
|
||||
session.close()
|
||||
try:
|
||||
int_table = user(user_id=message.from_user.id,
|
||||
user_fullname=message.from_user.full_name,
|
||||
dick_size=numb,
|
||||
int_table = User(user_id=message.from_user.id,
|
||||
user_fullname=message.from_user.full_name,
|
||||
date_updated=datetime.datetime.now(),
|
||||
date_created=datetime.datetime.now(),
|
||||
chat_id=message.chat.id)
|
||||
date_created=datetime.datetime.now())
|
||||
new_dick = DickRequest(user_id=message.from_user.id,
|
||||
chat_id=message.chat.id,
|
||||
dick_size=numb)
|
||||
|
||||
dick_request.user = int_table
|
||||
session.add(int_table)
|
||||
session.add(new_dick)
|
||||
session.add(dick_request)
|
||||
session.flush()
|
||||
session.commit()
|
||||
@@ -130,26 +139,27 @@ async def up_dick(message: types.Message): # рандомайзер
|
||||
|
||||
|
||||
@dp.message_handler(commands=["topdick"])
|
||||
async def send_topchat(message: types.Message):
|
||||
async def send_top_chat(message: types.Message):
|
||||
try:
|
||||
changechat_id = session.query(user).filter(user.user_id == message.from_user.id).first()
|
||||
top = []
|
||||
chats = message.chat.id
|
||||
changechat_id = session.query(DickRequest).filter(DickRequest.user_id == message.from_user.id,
|
||||
DickRequest.chat_id == chats).first()
|
||||
dicks = session.query(DickRequest)\
|
||||
.filter(DickRequest.chat_id == chats)\
|
||||
.limit(10).all()\
|
||||
.order_by(DickRequest.dick_size.desc())
|
||||
for dick in dicks:
|
||||
user = session.query(User.user_fullname).filter(User.user_id == dick.user_id)
|
||||
top.append([user.full_name, dick.dick_size])
|
||||
delimiter = ': '
|
||||
chats = message.chat.id
|
||||
if changechat_id.chat_id != chats:
|
||||
changechat_id.chat_id = chats
|
||||
session.commit()
|
||||
session.close()
|
||||
else:
|
||||
session.close()
|
||||
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, то:
|
||||
|
||||
size_len = len(top)
|
||||
if size_len < 10:
|
||||
len_minus = 10 - size_len
|
||||
top.extend(('-'*len_minus))
|
||||
top.extend([('-'*len_minus),""])
|
||||
await bot.send_message(message.chat.id, top_dick_message(delimiter, top))
|
||||
session.close()
|
||||
# если все нормально и участников минимум 10
|
||||
@@ -167,11 +177,16 @@ async def send_topchat(message: types.Message):
|
||||
@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()
|
||||
|
||||
top = []
|
||||
dicks = session.query(DickRequest) \
|
||||
.limit(10).all() \
|
||||
.order_by(DickRequest.dick_size.desc())
|
||||
for dick in dicks:
|
||||
user = session.query(User.user_fullname).filter(User.user_id == dick.user_id)
|
||||
top.append([user.full_name, dick.dick_size])
|
||||
delimiter = ': '
|
||||
|
||||
await bot.send_message(message.chat.id, top_dick_message(delimiter, top_chat))
|
||||
await bot.send_message(message.chat.id, top_dick_message(delimiter, top))
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print('ошибка в /globaldick, трейсбэк:\n' + '\n'.join(traceback.format_tb(e.__traceback__)))
|
||||
|
||||
Reference in New Issue
Block a user