import logging import io import base64 from aiogram import types from aiogram.dispatcher.filters import ChatTypeFilter from load import dp, bot, config from keyboards.inline.keyboard import menu from parser import get_about_replacements if config.logging_user: 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" ) ) @dp.message_handler(ChatTypeFilter(['private']), commands=['start', 'get']) async def get_replace(message: types.Message): if config.logging_user: 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", ) 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 )