예제 #1
0
        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("⛔Прорущен аргумент!⛔")
예제 #2
0
        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
예제 #3
0
            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
예제 #4
0
        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("⛔Пропущен аргумент!⛔")
예제 #5
0
        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)
예제 #6
0
        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("⛔Прорущен аргумент!⛔")
예제 #7
0
        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("⛔Нет аргумента⛔")
예제 #8
0
        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('АБВГДЛМИСЭ'))