import logging
import io
import base64
from aiogram import types
from aiogram.dispatcher.filters import ChatTypeFilter
from aiogram.dispatcher import FSMContext
from load import dp, bot, config
from keyboards.inline.keyboard import menu
from parser import get_about_replacements
from keyboards.inline.donate import donate
if config.enable_logging:
from database import register
@dp.message_handler(commands=["help"])
async def help_msg(message: types.Message):
await bot.send_message(
message.chat.id,
(
"Я всего-лишь небольшой помощник:3\n"
"Умею работать в чатах, для настройки попросите администратора чата указать группу с помощью команды /set\n"
"/set - Установить группу, для получения данных о заменах(Работает ТОЛЬКО в чатах)\n"
"/start /get - получить информацию о заменах\n"
"[Viber Bot](viber://pa?chatURI=tfk_replace)"
), parse_mode='Markdown'
)
@dp.message_handler(ChatTypeFilter(['private']), commands=['start', 'get'], state="*")
async def get_replace(message: types.Message, state: FSMContext):
if message.from_user.id in [int(i) for i in config.admin_users.split(',')] and str(message.get_args()).isdigit():
await bot.send_message(message.chat.id, "Напишите ответ")
await state.update_data(u=message.get_args())
await state.set_state(state="answer_support")
return
if config.enable_logging:
register(
user_id=message.from_user.id,
username=message.from_user.username,
first_name=str(message.from_user.first_name),
last_name=message.from_user.last_name
)
link = (
'Проверьте замены тут'
.format(config.bot("link"))
)
logging.info("User: {user_id} - {username}".format(
user_id=str(message.from_user.id),
username=str(message.from_user.username)
))
try:
data = get_about_replacements()
if 'image' in data:
await bot.send_photo(
message.chat.id,
io.BytesIO(
base64.b64decode(
data["data"]['all']
)
),
parse_mode="Markdown",
reply_markup=donate
)
return
await bot.send_message(
message.chat.id,
"Замены {date}\n{teacher}\nВыберите свою группу"
.format(
date=data["date"].lower(),
teacher=str(data["another_teacher"]).title()
),
reply_markup=menu(data["data"])
)
except Exception as e:
logging.error(str(e))
err_msg = (
"Техничиские шоколадки... "
f"Скорее всего структура файла была изменена\n{link}"
)
await bot.send_message(
message.chat.id,
err_msg,
parse_mode='HTML',
disable_web_page_preview=True
)
@dp.message_handler(commands=['link'])
async def get_link(message: types.Message):
msg = (
'Проверьте замены тут'
.format(config.bot("link"))
)
await bot.send_message(
message.chat.id,
msg,
parse_mode='HTML',
disable_web_page_preview=True
)