forked from Pavel_Durov/python_bot
add structure to code
This commit is contained in:
parent
c0e0b51dee
commit
31abb3460a
200
bot.py
200
bot.py
@ -1,208 +1,24 @@
|
||||
from cgitb import text
|
||||
import datetime
|
||||
from create_bot import dp
|
||||
import logging
|
||||
from random import randint
|
||||
from sqlalchemy import create_engine, MetaData, Table, Integer, String, \
|
||||
Column, DateTime, ForeignKey, Numeric
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from aiogram import Bot, Dispatcher, executor, types
|
||||
from aiogram.types import ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton
|
||||
from sqdb import user, session, engine
|
||||
from aiogram import executor
|
||||
from handlers import pipisa, time_new_year, start_help
|
||||
|
||||
|
||||
|
||||
|
||||
API_TOKEN = '5724991559:AAEuLvpLsgP6LHRGMSyFtQLlR5qPQUO4b_w'
|
||||
print('Бот начал работу')
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
bot = Bot(token=API_TOKEN, parse_mode="HTML")
|
||||
dp = Dispatcher(bot)
|
||||
|
||||
@dp.message_handler(commands=["chat"])
|
||||
async def send_chat(message: types.Message):
|
||||
await message.answer(f'{message.chat.id}')
|
||||
|
||||
|
||||
@dp.message_handler(commands=["time"])
|
||||
async def send_time(message: types.Message):
|
||||
new_year = datetime.datetime(2022, 12, 31) #дата нового года
|
||||
ct = datetime.datetime.now() #датавремя
|
||||
cd = datetime.datetime.now().strftime("%d/%m/%Y") #дата (д,м,г)
|
||||
ct1 = ct+datetime.timedelta(hours=15) # +14 часов от сервера
|
||||
ct2 = ct1.strftime('%H:%M') # форматирует датувремя просто во время(ч,м)
|
||||
raznitsa = (new_year - ct).days #отнимает от нг текущее время и получаем разницу в днях
|
||||
pipisa.register_handlers_pipisa(dp)
|
||||
time_new_year.register_handlers_time(dp)
|
||||
|
||||
days = ['день', 'дня', 'дней']
|
||||
if raznitsa % 10 == 1 and raznitsa % 100 != 11:
|
||||
p = 0
|
||||
elif 2 <= raznitsa % 10 <= 4 and (raznitsa % 100 < 10 or raznitsa % 100 >= 20):
|
||||
p = 1
|
||||
else:
|
||||
p = 2
|
||||
num=(str(raznitsa) + ' ' + days[p])
|
||||
|
||||
await message.reply(f'Сегодня {cd} \nВремя: {ct2} \nДо Нового Года осталось {num}')
|
||||
|
||||
#####______________________ПИПИСА БОТ БУДЕТ ЗДЕСЬ__________________________________
|
||||
start_help.register_handlers_StartHelp(dp)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@dp.message_handler(commands=["dick"])
|
||||
async def ident(message: types.Message):
|
||||
# рандомайзер
|
||||
numb = randint(-7,10)
|
||||
global size_change, dick_plus, dick_minus
|
||||
dick_plus = f'<b>вырос</b> 🚀 на <b>{numb}</b> см!'
|
||||
dick_minus = f'<b>уменьшился</b> ✂ на <b>{abs(numb)}</b> см!'
|
||||
if numb > 0:
|
||||
size_change = dick_plus
|
||||
else: size_change = dick_minus
|
||||
####
|
||||
|
||||
|
||||
|
||||
# работа с таблицей
|
||||
|
||||
if 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()
|
||||
now_time = datetime.datetime.now()
|
||||
session.close()
|
||||
last_time = b.datetimes
|
||||
diff = now_time.day - last_time.day
|
||||
|
||||
|
||||
if abs(diff) <= 0:
|
||||
with session:
|
||||
await bot.send_message(message.chat.id, f'@{message.from_user.username},🚫 вы уже крутили пипису, ее размер <b>{b.dick_size}</b> см! ')
|
||||
session.close()
|
||||
print(diff)
|
||||
print(type(diff))
|
||||
else:
|
||||
with session:
|
||||
a = session.query(user).filter(user.user_id == message.from_user.id).first() # запрос на поиск в таблице
|
||||
a.dick_size = (a.dick_size + numb)
|
||||
a.datetimes = datetime.datetime.now()
|
||||
session.commit() #обновляет запись
|
||||
await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш писюн {size_change}\n\
|
||||
Теперь он равен <b>{a.dick_size}</b> см! ')
|
||||
session.close()
|
||||
|
||||
else:
|
||||
with session:
|
||||
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.commit()
|
||||
session.close()
|
||||
await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш писюн {size_change}\n\
|
||||
Теперь он равен <b>{int_table.dick_size}</b> см!')
|
||||
|
||||
|
||||
|
||||
# int_table = user(user_id = message.from_user.id, user_fullname = message.from_user.full_name, dick_size = numb) #импортирую юзер из sqdb
|
||||
# session.add(int_table)
|
||||
# session.commit()
|
||||
#обновление
|
||||
# dick_update = session.query(user).filter_by(user.user_id = message.from_user.id).update({'dick_size': user.dick_size + numb})
|
||||
# session.add(dick_update)
|
||||
# session.commit()
|
||||
#last_size = session.query(user).filter_by(user_id = message.from_user.id).select_from(dick_size = 'dick_size: ').one()
|
||||
|
||||
|
||||
|
||||
#####______________________ПИПИСА БОТ БУДЕТ ЗДЕСЬ__________________________________
|
||||
|
||||
@dp.message_handler(commands=["topdick"])
|
||||
async def send_topchat(message: types.Message):
|
||||
with session:
|
||||
changechat_id = session.query(user).filter(user.user_id == message.from_user.id).first()
|
||||
chats = message.chat.id
|
||||
if changechat_id.chat_id != chats:
|
||||
changechat_id.chat_id = chats
|
||||
session.close()
|
||||
with session:
|
||||
top = session.query(user.user_fullname, user.dick_size).order_by(user.dick_size.desc()).filter(user.chat_id == chats).limit(10).all()
|
||||
session.close()
|
||||
delimiter = ': '
|
||||
|
||||
# проверка на длину списка, если меньше 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')
|
||||
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')
|
||||
session.close()
|
||||
|
||||
|
||||
|
||||
@dp.message_handler(commands=["globaldick"])
|
||||
async def send_time(message: types.Message):
|
||||
with session:
|
||||
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')
|
||||
session.close()
|
||||
|
||||
@dp.message_handler(commands=['start'])
|
||||
async def start_func(message: types.Message):
|
||||
# user_id = message.from_user.id
|
||||
# user_full_name = message.from_user.full_name
|
||||
# logging.INFO(f'{user_id=} {user_full_name=}', {time.asctime()})
|
||||
await message.reply('похуй')
|
||||
|
||||
@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')
|
||||
|
||||
#хуй
|
||||
engine.dispose()
|
||||
if __name__ == '__main__':
|
||||
executor.start_polling(dp, skip_updates=True)
|
||||
|
||||
|
4
create_bot.py
Normal file
4
create_bot.py
Normal file
@ -0,0 +1,4 @@
|
||||
from aiogram import Bot, Dispatcher
|
||||
API_TOKEN = '5724991559:AAEuLvpLsgP6LHRGMSyFtQLlR5qPQUO4b_w'
|
||||
bot = Bot(token=API_TOKEN, parse_mode="HTML")
|
||||
dp = Dispatcher(bot)
|
3
handlers/__init__.py
Normal file
3
handlers/__init__.py
Normal file
@ -0,0 +1,3 @@
|
||||
from handlers import pipisa
|
||||
from handlers import time_new_year
|
||||
from handlers import start_help
|
133
handlers/pipisa.py
Normal file
133
handlers/pipisa.py
Normal file
@ -0,0 +1,133 @@
|
||||
from aiogram import types, Dispatcher
|
||||
from create_bot import bot, dp
|
||||
from sqdb import user, session
|
||||
from random import randint
|
||||
import datetime
|
||||
|
||||
|
||||
|
||||
@dp.message_handler(commands=["dick"])
|
||||
async def up_dick(message: types.Message):
|
||||
# рандомайзер
|
||||
numb = randint(-7,10)
|
||||
global size_change, dick_plus, dick_minus
|
||||
dick_plus = f'<b>вырос</b> 🚀 на <b>{numb}</b> см!'
|
||||
dick_minus = f'<b>уменьшился</b> ✂ на <b>{abs(numb)}</b> см!'
|
||||
if numb > 0:
|
||||
size_change = dick_plus
|
||||
else: size_change = dick_minus
|
||||
|
||||
|
||||
# работа с таблицей
|
||||
|
||||
if 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()
|
||||
now_time = datetime.datetime.now()
|
||||
session.close()
|
||||
last_time = b.datetimes
|
||||
diff = now_time.day - last_time.day
|
||||
|
||||
|
||||
if abs(diff) <= 0:
|
||||
with session:
|
||||
await bot.send_message(message.chat.id, f'@{message.from_user.username},🚫 вы уже крутили пипису, ее размер <b>{b.dick_size}</b> см! ')
|
||||
session.close()
|
||||
print(diff)
|
||||
print(type(diff))
|
||||
else:
|
||||
with session:
|
||||
a = session.query(user).filter(user.user_id == message.from_user.id).first() # запрос на поиск в таблице
|
||||
a.dick_size = (a.dick_size + numb)
|
||||
a.datetimes = datetime.datetime.now()
|
||||
session.commit() #обновляет запись
|
||||
await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш писюн {size_change}\n\
|
||||
Теперь он равен <b>{a.dick_size}</b> см! ')
|
||||
session.close()
|
||||
|
||||
else:
|
||||
with session:
|
||||
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.commit()
|
||||
session.close()
|
||||
await bot.send_message(message.chat.id, f'@{message.from_user.username}, ваш писюн {size_change}\n\
|
||||
Теперь он равен <b>{int_table.dick_size}</b> см!')
|
||||
|
||||
|
||||
@dp.message_handler(commands=["topdick"])
|
||||
async def send_topchat(message: types.Message):
|
||||
with session:
|
||||
changechat_id = session.query(user).filter(user.user_id == message.from_user.id).first()
|
||||
chats = message.chat.id
|
||||
if changechat_id.chat_id != chats:
|
||||
changechat_id.chat_id = chats
|
||||
session.close()
|
||||
with session:
|
||||
top = session.query(user.user_fullname, user.dick_size).order_by(user.dick_size.desc()).filter(user.chat_id == chats).limit(10).all()
|
||||
session.close()
|
||||
delimiter = ': '
|
||||
|
||||
# проверка на длину списка, если меньше 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')
|
||||
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')
|
||||
session.close()
|
||||
|
||||
|
||||
|
||||
@dp.message_handler(commands=["globaldick"])
|
||||
async def send_global_top(message: types.Message):
|
||||
with session:
|
||||
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')
|
||||
session.close()
|
||||
|
||||
|
||||
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)
|
||||
|
25
handlers/start_help.py
Normal file
25
handlers/start_help.py
Normal file
@ -0,0 +1,25 @@
|
||||
from aiogram import types, Dispatcher
|
||||
from create_bot import dp, bot
|
||||
|
||||
@dp.message_handler(commands=['start'])
|
||||
async def start_func(message: types.Message):
|
||||
# user_id = message.from_user.id
|
||||
# user_full_name = message.from_user.full_name
|
||||
# logging.INFO(f'{user_id=} {user_full_name=}', {time.asctime()})
|
||||
await message.reply('похуй')
|
||||
|
||||
@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)
|
27
handlers/time_new_year.py
Normal file
27
handlers/time_new_year.py
Normal file
@ -0,0 +1,27 @@
|
||||
from aiogram import types, Dispatcher
|
||||
from create_bot import dp, bot
|
||||
import datetime
|
||||
|
||||
@dp.message_handler(commands=["time"])
|
||||
async def send_time(message: types.Message):
|
||||
new_year = datetime.datetime(2022, 12, 31) #дата нового года
|
||||
ct = datetime.datetime.now() #датавремя
|
||||
cd = datetime.datetime.now().strftime("%d/%m/%Y") #дата (д,м,г)
|
||||
ct1 = ct+datetime.timedelta(hours=15) # +14 часов от сервера
|
||||
ct2 = ct1.strftime('%H:%M') # форматирует датувремя просто во время(ч,м)
|
||||
raznitsa = (new_year - ct).days #отнимает от нг текущее время и получаем разницу в днях
|
||||
|
||||
days = ['день', 'дня', 'дней']
|
||||
if raznitsa % 10 == 1 and raznitsa % 100 != 11:
|
||||
p = 0
|
||||
elif 2 <= raznitsa % 10 <= 4 and (raznitsa % 100 < 10 or raznitsa % 100 >= 20):
|
||||
p = 1
|
||||
else:
|
||||
p = 2
|
||||
num=(str(raznitsa) + ' ' + days[p])
|
||||
|
||||
await message.reply(f'Сегодня {cd} \nВремя: {ct2} \nДо Нового Года осталось {num}')
|
||||
|
||||
|
||||
def register_handlers_time(dp: Dispatcher):
|
||||
dp.register_message_handler(send_time)
|
Loading…
Reference in New Issue
Block a user