Exemple #1
0
async def start(bot_dispatcher):
    if is_test:
        for user_id in users_db.get_ids('users'):
            if user_id in ADMIN_IDS:
                await bot.send_message(user_id, 'Бот запущен в тестовом режиме', reply_markup=keyboards.main_admin)
    else:
        for user_id in users_db.get_ids('users'):
            if user_id in ADMIN_IDS:
                await bot.send_message(user_id, 'Бот запущен', reply_markup=keyboards.main_admin)
            else:
                await bot.send_message(user_id, 'Бот запущен', reply_markup=keyboards.main_user)
Exemple #2
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)
Exemple #3
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)
Exemple #4
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
Exemple #5
0
async def admin_question_answer(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        message_id = data['message_id']
        question = questions_base.get_message(message_id)
        if question['author_id'] in users_db.get_ids('users'):
            await bot.send_message(question['author_id'],
                                   f'Вам пришел ответ на ваш вопрос:\n'
                                   f'Урок №{question["lesson_id"]}: '
                                   f'{lessons_db.get_record_by_id(question["group"], question["lesson_id"])["theme"]}' +
                                   f'\n\n {question["text"]}\n\n'
                                   f'Ответ:\n{message.text}')

    questions_base.delete_message(message_id)
    await bot.send_message(message.chat.id, 'Сообщение отправлено', reply_markup=keyboards.adminsroom_message_chose())
    await Message.question.set()
Exemple #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)
Exemple #7
0
        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)


@dispatcher.message_handler(lambda message: True if message.chat.id not in users_db.get_ids('users') else False)
async def start_write(message: types.Message):
    await bot.send_message(message.chat.id, 'Напишите команду /start')


@dispatcher.message_handler(state='*', commands='cancel')
@dispatcher.message_handler(Text(equals='отмена', ignore_case=True), state='*')
async def cancel_handler(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        current_state = await state.get_state()
        keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)

        if current_state is None:
            return

        elif current_state == 'Lessons:group':