async def find_command(message: types.Message): db = dbcontrol.DBcontrol() try: user_id = db.get_user_id_by_name(message.text.split(' ')[1]) if not user_id: await message.answer("⛔Пользователь не найден!⛔") return await self.get_chat_member(user_id, user_id) user = dbcontrol.User(user_id) card = Card.Card( '#40c192' if not user.info['ban_status'] else '#ea4b4b') card.title('media/fonts/Arial-bold.ttf', '#ffff', str(user.info['user_name'])) card.text( 'media/fonts/Arial-bold.ttf', '#ffff', 50, f"ID: {user.info['id']}\n" f"Класс: {user.info['class_number']}-{user.info['class_char']}\n" f"Дата регистрации: {user.info['reg_date']}\n" f"Город: {user.info['city']}\n" f"Права администратора: {'Да' if user.info['admin_status'] else 'Нет'}\n" ) card.save(f'{message.from_user.id}.png') with open(f'{message.from_user.id}.png', 'rb') as f: await message.answer_photo(photo=f) os.remove(f'{message.from_user.id}.png') except IndexError: await message.answer("⛔Прорущен аргумент!⛔")
async def callback_inline(call: types.CallbackQuery): user = dbcontrol.User(call.from_user.id) if call.data in ('9', '10', '11'): user.set_class_number(int(call.data)) await call.answer('✅Изменено✅') elif call.data in 'АБВГДЛМИСЭ': user.set_class_char(call.data) await call.answer('✅Изменено✅') elif call.data in self.__subjects: try: await call.answer('📶Загружаю📶') with open( f'media/files/классы/{user.info["class_number"]}/доп материалы/{call.data.lower()}/' f'{call.data.lower()}.zip', 'rb') as f: await self.send_document(call.from_user.id, f) except FileNotFoundError: await call.answer("😓Файл не найден😓") except ConnectionError: await call.answer( '⚠Не удалось загрузить дополнительный материалы⚠') else: pass
def checker(message: types.Message): try: user = dbcontrol.User(message.from_user.id) if admin_only: if user.info['admin_status']: data = func(message) else: data = nothing() elif not user.info['ban_status']: user.set_user_sent_messages_per_minute( user.info['sent_messages_per_minute'] + 1) data = func(message) else: data = nothing() if logging and not user.info['ban_status']: print(f'[CHAT-LOG] <id={message.from_user.id}> ' f'<Telegram=@{message.from_user.username}> ' f'<user_name={user.info["user_name"]}> ' f'<admin={user.info["admin_status"]}> ' f'<ban={user.info["ban_status"]}> ' f'<text={message.text}> ') except IndexError: return nothing() return data
async def set_admin(message: types.Message): try: dbcontrol.User(int(message.text.split(' ')[1])).admin( True if message.text.split(' ')[2].lower() == 'true' else False) await message.answer("✅Успех✅") except IndexError: await message.answer("⛔Пропущен аргумент!⛔")
async def set_city_command(message: types.Message): try: city = message.text[10:] if city: dbcontrol.User(message.from_user.id).set_city(city) else: await message.answer("⛔Нет аргумента⛔") except Exception as e: print(e)
async def ban_command(message: types.Message): try: user_id = message.text.split(' ')[1] status = message.text.split(' ')[2] dbcontrol.User(int(user_id)).ban(True if status.lower() == 'true' else False) await message.answer("✅Успех✅") except IndexError: await message.answer("⛔Прорущен аргумент!⛔")
async def set_name(message: types.Message): try: nick = message.text.split(' ')[1] if len(nick) < 15: if dbcontrol.User( message.from_user.id).set_user_name(nick): await message.answer("✅Успех✅") else: await message.answer("⚠Это имя занято⚠") else: await message.answer('⚠Это имя очень длинное⚠') except IndexError: await message.answer("⛔Нет аргумента⛔")
async def handle_message(message: types.Message): if message.text == '📃Расписание📃': user = dbcontrol.User(message.from_user.id) try: with open( f'media/files/классы/{user.info["class_number"]}/расписание/{user.info["class_char"]}.jpg', 'rb') as f: await message.answer_photo(f) except FileNotFoundError: await message.answer( '😧Расписание для класса' f' {user.info["class_number"]}-{user.info["class_char"]} не было найдено!😧' ) elif message.text == '📚Школа📚': await message.answer('Вы находитесь в разделе «📚Школа📚».', reply_markup=self.__dirs[message.text]) elif message.text == '🔄Главное меню🔄': await message.answer('Вы вернулись в главное меню.', reply_markup=self.__dirs[message.text]) elif message.text == '📰Новости📰': with open('media/text/web/news.txt', 'r') as f: await message.answer(f.read(), parse_mode='Markdown') elif message.text == '🎲Прочее🎲': await message.answer('В находитесь в разделе «🎲Прочее🎲».', reply_markup=self.__dirs[message.text]) elif message.text == '🌤Погода🌤': try: city = str( dbcontrol.User(message.from_user.id).info['city']) w = self.__owm.weather_manager().weather_at_place( city).weather card = Card.Card(color_bg_title='#2777ff') card.title('media/fonts/Arial-bold.ttf', '#ffff', city) card.text( 'media/fonts/Arial-bold.ttf', '#ffff', 62, f'Статус: {w.detailed_status}\n' f"Температура: {w.temperature('celsius')['temp']} C\n" f"Скорость ветра: {w.wind()['speed']} м\\с\n" f"Влажность: {w.humidity}%\n" f"Облачность: {w.clouds}%", ) card.save(f'{message.from_user.id}.png') with open(f'{message.from_user.id}.png', 'rb') as f: await message.answer_photo(photo=f) os.remove(f'{message.from_user.id}.png') except Exception as e: await message.answer(f'⛔{e}⛔') elif message.text == '🦠COVID-19🦠': with open('media/text/web/covid.txt', 'r', encoding='utf-8') as f: await message.answer(f.read(), parse_mode='Markdown') elif message.text == '😺Котики😺': try: with open(f'{message.chat.id}.jpg', 'wb') as f: f.write( requests.get( 'https://thiscatdoesnotexist.com/').content) with open(f'{message.chat.id}.jpg', 'rb') as f: await message.answer_photo(f) os.remove(f'{message.chat.id}.jpg') except PermissionError: await message.answer( "⛔Вы отправляете сообщения слишком быстро!⛔") elif message.text == '❓Помощь❓': await message.answer(f'Вы перешли в раздел «{message.text}»', reply_markup=self.__dirs[message.text]) elif message.text == '⚙️Команды⚙️': with open('media/text/help/commands_help.txt', 'r', encoding="utf-8") as f: await message.answer(f.read(), parse_mode='Markdown') elif message.text == '©️GitHub©️': with open('media/text/help/github.txt', 'r', encoding="utf-8") as f: await message.answer(f.read(), parse_mode='Markdown') elif message.text == '💬Контакты💬': with open('media/text/help/contacts.txt', 'r', encoding="utf-8") as f: await message.answer(f.read(), parse_mode='Markdown') elif message.text == '☝️Цитаты☝️': site = siteparser.Quotes() await message.answer( f'{site.get_quote_message()}\n\n*{site.get_author()}*', parse_mode="Markdown") elif message.text == '👤Аккаунт👤': await message.answer(f'Вы перешли в раздел «{message.text}»', reply_markup=self.__dirs[message.text]) elif message.text == '📂Информация📂': user = dbcontrol.User(message.from_user.id) card = Card.Card( '#40c192' if not user.info['ban_status'] else '#ea4b4b') card.title('media/fonts/Roboto/RobotoCondensed-Bold.ttf', '#ffff', str(user.info['user_name'])) card.text( 'media/fonts/Arial/Arial-bold.ttf', '#ffff', 50, f"ID: {user.info['id']}\n" f"Класс: {user.info['class_number']}-{user.info['class_char']}\n" f"Дата регистрации: {user.info['reg_date']}\n" f"Город: {user.info['city']}\n" f"Права администратора: {bool(user.info['admin_status'])}\n" ) card.save(f'{message.from_user.id}.png') with open(f'{message.from_user.id}.png', 'rb') as f: await message.answer_photo(photo=f) os.remove(f'{message.from_user.id}.png') elif message.text == '🔢Номер класса🔢': await message.answer('Выберите класс', reply_markup=RangeNumberInLineButton( range(9, 12))) elif message.text == '📘Доп материалы📘': await message.answer("👇Выберите предмет👇", reply_markup=RangeNumberInLineButton( self.__subjects)) elif message.text == '🔡Буква класса🔡': await message.answer( 'Выберите букву класса', reply_markup=RangeNumberInLineButton('АБВГДЛМИСЭ'))