Пример #1
0
async def admin_chose_user(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        user_id = ''
        for char in message.text:
            if char.isnumeric():
                user_id += char
            else:
                break
        if user_id:
            user_id = int(user_id)
        else:
            await bot.send_message(message.chat.id, 'Неправильный id пользователя')
            return

        if int(user_id) not in users_db.get_ids('users'):
            await bot.send_message(message.chat.id, 'Неправильный id пользователя')
            return

        data['user_id'] = int(user_id)
        user = users_db.get_record_by_id('users', data['user_id'])
        text = f'id: {user["id"]}\n' \
               f'username: {user["user_name"]}\n' \
               f'level: {user["level"]}\n' \
               f'post: {user["post"]}'
        await Message.answer_user.set()
        await bot.send_message(message.chat.id, text, reply_markup=keyboards.adminsroom_user_main)
Пример #2
0
async def start(message: types.Message, state: FSMContext):
    user_id = message.chat.id

    if user_id in ADMIN_IDS:
        keyboard = keyboards.main_admin
    else:
        keyboard = keyboards.main_user

    await state.finish()

    if user_id not in users_db.get_ids('users'):
        if user_id in ADMIN_IDS:
            users_db.add_record('users', user_id, message.from_user.username, 'admin', 100)

        else:
            if message.from_user.username:
                users_db.add_record('users', user_id, message.from_user.username, 'user', 1)

            else:
                users_db.add_record('users', user_id, f'User_{user_id}', 'user', 1)

        print(users_db.get_record_by_id('users', user_id))

        await bot.send_message(user_id, 'Стартуем', reply_markup=keyboard)

    else:
        await bot.send_message(user_id, 'Вы уже есть в БД', reply_markup=keyboard)
Пример #3
0
def adminsroom_user_chose() -> ReplyKeyboardMarkup:
    keyboard = ReplyKeyboardMarkup(resize_keyboard=True)
    for user_id in users_db.get_ids('users'):
        user = users_db.get_record_by_id('users', user_id)
        button = f'{user_id}: {user["user_name"]}'
        keyboard.row(button)
    keyboard.row('Отмена')
    return keyboard
Пример #4
0
async def admin_user_handler(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        if message.text.lower() == 'повысить':
            user_id = data['user_id']
            users_db.update_column('users', user_id, 'level', users_db.get_record_by_id('users', user_id)['level'] + 1)
            await bot.send_message(message.chat.id, f'Уровень повышен '
                                                    f'({users_db.get_record_by_id("users", user_id)["level"]})')
            await bot.send_message(data['user_id'], f'Ваш уровень повышен '
                                                    f'({users_db.get_record_by_id("users", user_id)["level"]})')

        elif message.text.lower() == 'понизить':
            user_id = data['user_id']
            users_db.update_column('users', user_id, 'level', users_db.get_record_by_id("users", user_id)['level'] - 1)
            await bot.send_message(message.chat.id, f'Уровень понижен '
                                                    f'({users_db.get_record_by_id("users", user_id)["level"]})')
            await bot.send_message(data['user_id'], f'Ваш уровень понижен '
                                                    f'({users_db.get_record_by_id("users", user_id)["level"]})')

        elif message.text.lower() == 'написать сообщение':
            await Message.message_user.set()
            await bot.send_message(message.chat.id, 'Введи своё сообщение:', reply_markup=keyboards.cancel)
Пример #5
0
async def lessons_chose(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        lesson_id = ''
        for char in message.text:
            if char.isnumeric():
                lesson_id += char
            else:
                break
        if lesson_id:
            lesson_id = int(lesson_id)
        else:
            await bot.send_message(message.chat.id, 'Неправильный номер урока.'
                                                    ' Введите корректный номер или выберите из клавиатуры')
            return

        if int(lesson_id) not in lessons_db.get_ids(data['group']):
            await bot.send_message(message.chat.id, 'Неправильный номер урока.'
                                                    ' Введите корректный номер или выберите из клавиатуры')
            return

        data['lesson'] = lessons_db.get_record_by_id(data['group'], lesson_id)

        lesson = data['lesson']

    if lesson['level'] > users_db.get_record_by_id('users', message.chat.id)['level']:
        await bot.send_message(message.chat.id, 'У вас слишком низкий уровень. Чтобы получить уровень выше, '
                                                'Вы должны пройти тест в предыдущем уроке, если вы его прошли, но еще '
                                                'не получили уровень, обратитесь к преподавателю.\n'
                                                f'Ваш уровень: '
                                                f'{users_db.get_record_by_id("users", message.chat.id)["level"]}\n'
                                                f'Требуется уровень: {lesson["level"]}')
        return

    if 'Практическая' in lesson['theme']:
        text = lesson['text']
        text = text.split('\n')
        user_id = message.chat.id
        user_var = user_id % len(text)
        await bot.send_message(message.chat.id, f'Урок №{lesson_id}:\n\nТема: {lesson["theme"]} \n\n{text[user_var]}')
    else:
        await bot.send_message(message.chat.id, f'Урок №{lesson_id}:\n\nТема: {lesson["theme"]} \n\n{lesson["text"]}')
    await bot.send_message(message.chat.id, 'https://wombat.org.ua/AByteOfPython/AByteofPythonRussian-2.02.pdf')

    paths = lesson["materials"]
    paths = paths.split('\n')
    for path in paths:
        await bot.send_message(message.chat.id, path)
    await bot.send_message(message.chat.id,
                           'Удачи в изучении. Снизу кнопки для сдачи теста,'
                           ' помощи от преподавателя или, если вы не хотите, то отмена',
                           reply_markup=keyboards.lessons_lesson)
    await Lessons.next()
Пример #6
0
async def admin_handler(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        if message.text.lower() == 'сообщения':
            await Message.question.set()
            await bot.send_message(message.chat.id, 'Выберите сообщение',
                                   reply_markup=keyboards.adminsroom_message_chose())

        elif message.text.lower() == 'пользователь':
            await Message.user.set()
            await bot.send_message(message.chat.id, 'Введите id пользователя',
                                   reply_markup=keyboards.adminsroom_user_chose())

        elif message.text.lower() == 'все пользователи':
            with open('users.txt', 'w') as users_file:
                users_file.write(f'{"id":^11}|{"username":^20}|{"post":^6}|{"level":^6}\n')
                users_file.write('-' * (12 + 21 + 7 + 6) + '\n')
                for user_id in users_db.get_ids('users'):
                    user = users_db.get_record_by_id('users', user_id)
                    users_file.write(f'{user["id"]:<11}|{user["user_name"]:^20}|{user["post"]:6}|{user["level"]:<6}\n')
            with open('users.txt', 'r') as users_file:
                await bot.send_document(message.chat.id, users_file)
Пример #7
0
async def profile(message: types.Message):
    user = users_db.get_record_by_id('users', message.chat.id)
    text = f'Имя: {user["user_name"]}\n' \
           f'id: {user["id"]}\n' \
           f'Уровень: {user["level"]}\n'
    await bot.send_message(message.chat.id, text, reply_markup=keyboards.profile_main())