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)
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)
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)
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
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()
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)
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':