def get_start(message: Message): if not is_person(message.chat): return try: user = User.get(telegram_id=str(message.chat.id)) if user in User.select(User).join(Links).join(Group).where( Group.group_name == 'Unauthorized'): raise Exception("Unauthorized user") except Exception: logger.info('Unauthorized user') user, created = User.get_or_create( telegram_id=message.chat.id, first_name=message.from_user.first_name if message.from_user.first_name is not None else '', last_name=message.from_user.last_name if message.from_user.last_name is not None else '', status='waiting for access') unauth_group, created = Group.get_or_create(group_name='Unauthorized') Links.create(user=user, group=unauth_group) bot.send_message(text=get_unauthorized_user_start_message(), chat_id=message.chat.id) for admin in User.select(User).join(Links).join(Group).where( Group.group_name == 'Admins'): bot.send_message(text=get_new_unauthorized_user_message(user), chat_id=admin.telegram_id, reply_markup=keyboard_to_chose_users_groups(user)) return bot.send_message( text=f'С возвращением, {user.first_name} {user.last_name}', chat_id=message.chat.id, reply_markup=get_start_keyboard(user))
def group(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Admins'): raise Exception("Unauthorized user") except Exception: bot.send_message(text=get_unauthorized_user_start_message(), chat_id=call.message.chat.id) return group_to_remove_from = Group.get(id=int(call.data.split('_')[1])) user_to_be_removed_from_group = User.get(id=int(call.data.split('_')[2])) Links.get(user=user_to_be_removed_from_group, group=group_to_remove_from).delete_instance() logger.info( f'{user.first_name} {user.last_name} removed user {user_to_be_removed_from_group.first_name} {user_to_be_removed_from_group.last_name} from group {group_to_remove_from.group_name}') bot.send_message(chat_id=user_to_be_removed_from_group.telegram_id, text=f'Вы удалены из группы {group_to_remove_from.group_name}', reply_markup=get_start_keyboard(user)) bot.send_message(chat_id=user_to_be_removed_from_group.telegram_id, text='Список доступных Вам функций', reply_markup=get_main_inline_keyboard(user_to_be_removed_from_group)) if Group.select(Group).join(Links).join(User).where(User.id == user_to_be_removed_from_group.id).count() == 0: Links.get_or_create(user=user_to_be_removed_from_group, group=Group.get(group_name='Unauthorized')) bot.send_message(chat_id=user_to_be_removed_from_group.telegram_id, text='Вы были удалены из всех групп. Получите авторизацию у администратора, чтобы продолжить пользоваться этим ботом!', reply_markup=None) bot.edit_message_text(message_id=call.message.message_id, chat_id=call.message.chat.id, text=user_info(user_to_be_removed_from_group), reply_markup=keyboard_to_chose_users_groups(user_to_be_removed_from_group))
def group(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Admins'): raise Exception("Unauthorized user") except Exception: bot.send_message(text=get_unauthorized_user_start_message(), chat_id=call.message.chat.id) return group_to_add_to = Group.get(id=int(call.data.split('_')[1])) user_to_be_entered_to_group = User.get(id=int(call.data.split('_')[2])) Links.get_or_create(user=user_to_be_entered_to_group, group=group_to_add_to) if user_to_be_entered_to_group in User.select(User).join(Links).join(Group).where( Group.group_name == 'Unauthorized'): temp_link = Links.get(user=user_to_be_entered_to_group, group=Group.get(group_name='Unauthorized')) temp_link.delete_instance() logger.info( f'{user.first_name} {user.last_name} added user {user_to_be_entered_to_group.first_name} {user_to_be_entered_to_group.last_name} to group {group_to_add_to.group_name}') bot.send_message(chat_id=user_to_be_entered_to_group.telegram_id, text=f'Вы авторизованы и добавлены в группу {group_to_add_to.group_name}', reply_markup=get_start_keyboard(user)) bot.send_message(chat_id=user_to_be_entered_to_group.telegram_id, text='Список доступных Вам функций', reply_markup=get_main_inline_keyboard(user_to_be_entered_to_group)) bot.edit_message_text(message_id=call.message.message_id, chat_id=call.message.chat.id, text=user_info(user_to_be_entered_to_group), reply_markup=keyboard_to_chose_users_groups(user_to_be_entered_to_group))
def start_edit_equipment(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Inventarization'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} tried to use inventarization functions, but this user is not in Inventarization group!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return equipment = Equipment.get(id=int(call.data.split('-')[1])) field_name = call.data.split('/')[1].split('-')[0] if field_name == 'type': bot.edit_message_text(chat_id=user.telegram_id, message_id=call.message.message_id, text='Введите новое наименование типа') User.update(status=f'edit-type_{equipment.id}').where(User.id == user.id).execute() elif field_name == 'mark': bot.edit_message_text(chat_id=user.telegram_id, message_id=call.message.message_id, text='Введите новое наименование марки') User.update(status=f'edit-mark_{equipment.id}').where(User.id == user.id).execute() elif field_name == 'model': bot.edit_message_text(chat_id=user.telegram_id, message_id=call.message.message_id, text='Введите новое наименование модели') User.update(status=f'edit-model_{equipment.id}').where(User.id == user.id).execute() elif field_name == 'serial': bot.edit_message_text(chat_id=user.telegram_id, message_id=call.message.message_id, text='Введите новый серийный номер') User.update(status=f'edit-serial_{equipment.id}').where(User.id == user.id).execute()
def check_equipment_zavhoz(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Zavhoz'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} tried to check equipment, but this user is not in Zavhoz group!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return bot.send_message(chat_id=user.telegram_id, text='Введите инвентарный номер оборудования') User.update(status='zavhoz_check_equipment').where(User.telegram_id == user.telegram_id).execute()
def get_help(message: Message): if not is_person(message.chat): return logger.info('ask for help!') try: user = User.get(telegram_id=str(message.chat.id)) if user in User.select(User).join(Links).join(Group).where( Group.group_name == 'Unauthorized'): raise Exception("Unauthorized user") except Exception: bot.send_message(text=f"""Возникли вопросы? Напиши администратору бота (@DzenBots)""", chat_id=message.chat.id) return bot.send_message(text=get_user_help_message(user), chat_id=message.chat.id)
def number_phone_search(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Users'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} is not authorized!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return User.update(status='phone_search/number').where(User.telegram_id == user.telegram_id).execute() bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Введите номер телефона искомого человека, начиная с +7')
def start_moving_equipment(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Inventarization'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} tried to use inventarization functions, but this user is not in Inventarization group!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return equipment = Equipment.get(id=int(call.data.split('-')[1])) bot.send_message(chat_id=user.telegram_id, text='Выберите корпус для перемещения', reply_markup=get_kurpus_keyboard_for_create_movement(equipment))
def main_serial_search(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Inventarization'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} tried to use inventarization functions, but this user is not in Inventarization group!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return bot.edit_message_text(chat_id=user.telegram_id, message_id=call.message.message_id, text='Введите серийный номер') User.update(status='serial_search').where(User.id == user.id).execute()
def start_edit_equipment(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Inventarization'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} tried to use inventarization functions, but this user is not in Inventarization group!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return equipment = Equipment.get(id=int(call.data.split('-')[1])) bot.send_message(chat_id=user.telegram_id, text='Выберите параметр для редактирования', reply_markup=get_edit_equipment_keyboard(equipment)) User.update(status='choose parameter for edit').where(User.id == user.id).execute()
def start_movement(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Inventarization'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} tried to use inventarization functions, but this user is not in Inventarization group!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return bot.edit_message_text(chat_id=user.telegram_id, text='Параметр поиска оборудования:', reply_markup=main_movement_keyboard, message_id=call.message.message_id) User.update(status='main_search').where(User.id == user.id).execute()
def start_phone_search(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Users'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} is not authorized!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return User.update(status='main_phone_search').where(User.telegram_id == user.telegram_id).execute() bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Выберите параметр поиска', reply_markup=phone_serach_parameters)
def receive_photo(message: Message): if not is_person(message.chat): return try: user = User.get(telegram_id=message.chat.id) if user in User.select(User).join(Links).join(Group).where( Group.group_name == 'Unauthorized'): raise Exception("Unauthorized user") except Exception: bot.send_message(text=get_unauthorized_user_start_message(), chat_id=message.chat.id) return if user.status.split(':')[0] == 'Edit_person_info': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'PhonesAdmin'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: edit_parameter = user.status.split(':')[1].split('_')[0] if not edit_parameter == 'photo': return else: photo_id = message.photo[0].file_id person = Person.get(id=user.status.split(':')[1].split('_')[1]) Person.update(photo=f'{str(photo_id)}').where( Person.id == person.id).execute() User.update(status='').where(User.id == user.id).execute() if not person.photo == '': bot.send_photo(chat_id=message.chat.id, photo=person.photo, caption=get_person_info(person), reply_markup=get_contact_reply_markup( user, person)) else: bot.send_message(chat_id=message.chat.id, text=get_person_info(person), reply_markup=get_contact_reply_markup( user, person)) bot.send_contact( chat_id=message.chat.id, phone_number=person.phone, first_name=person.surname, last_name=f"{person.name} {person.patronymic}")
def main_edit_person(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'PhonesAdmin'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} is not authorized!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return person = Person.get(id=call.data.split('_')[1]) User.update(status='Main_change_person_info').where(User.id == user.id).execute() bot.send_message(chat_id=call.message.chat.id, text='Что редактируем?', reply_markup=get_change_person_reply_markup(person))
def start_moving_equipment(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Inventarization'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} tried to use inventarization functions, but this user is not in Inventarization group!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return campus = call.data.split('-')[1].split('UK')[1] equipment = Equipment.get(id=int(call.data.split('-')[2])) bot.edit_message_text(message_id=call.message.message_id, chat_id=user.telegram_id, text='Введите кабинет для перемещения') User.update(status=f'create_movement/UK-{campus}/id-{equipment.id}').where(User.id == user.id).execute()
def main_edit_person(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'PhonesAdmin'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} is not authorized!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return edit_parameter = call.data.split('-')[1].split('_')[0] person = Person.get(id=call.data.split('-')[1].split('_')[1]) User.update(status=f'Edit_person_info:{edit_parameter}_{person.id}').where(User.id == user.id).execute() if edit_parameter == 'surname': bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Введите новую фамилию') elif edit_parameter == 'name': bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Введите новое имя') elif edit_parameter == 'patronymic': bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Введите новое отчество') elif edit_parameter == 'phone': bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Введите новый номер телефона') elif edit_parameter == 'photo': bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Пришлите новую фотографию') elif edit_parameter == 'email': bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Введите новый e-mail') elif edit_parameter == 'position': bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Введите новую должность')
def number_phone_search(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'PhonesAdmin'): raise Exception("Unauthorized user") except Exception: logger.info( f'User {user.first_name} {user.last_name} is not authorized!') bot.send_message(text='У Вас нет доступа к этой функции', chat_id=call.message.chat.id) return person = Person.get(id=int(call.data.split('_')[1])) Person.update(actual='True' if person.actual == 'False' else 'False').where(Person.id == person.id).execute() person = Person.get(id=int(call.data.split('_')[1])) bot.edit_message_text(chat_id=call.message.chat.id, text=get_person_info(person), message_id=call.message.message_id, reply_markup=get_contact_reply_markup(user, person))
def remove_group(call): if not is_person(call.message.chat): return try: user = User.get(telegram_id=call.message.chat.id) if user not in User.select(User).join(Links).join(Group).where(Group.group_name == 'Admins'): raise Exception("Unauthorized user") except Exception: bot.send_message(text=get_unauthorized_user_start_message(), chat_id=call.message.chat.id) return links = Links.select(Links).join(Group).where(Group.id == int(call.data.split('_')[1])) for link in links: link.delete_instance() logger.info(f"remove group - {Group.get(id=int(call.data.split('_')[1])).group_name}") group = Group.get(id=int(call.data.split('_')[1])) group.delete_instance() groups = Group.select() return_str = 'Список групп:\n' for group in groups: return_str += group.group_name + '\n' bot.edit_message_text(text=return_str, chat_id=call.message.chat.id, message_id=call.message.message_id) User.update(status='').where(User.id == user.id).execute()
def plain_text(message: Message): if not is_person(message.chat): return try: user = User.get(telegram_id=message.chat.id) if user in User.select(User).join(Links).join(Group).where( Group.group_name == 'Unauthorized'): raise Exception("Unauthorized user") except Exception: bot.send_message(text=get_unauthorized_user_start_message(), chat_id=message.chat.id) return if user.status == 'Adding group': if user in User.select(User).join(Links).join(Group).where( Group.group_name == 'Admins'): group, created = Group.get_or_create(group_name=message.text) bot.send_message(chat_id=message.chat.id, text='Группа добавлена') groups = Group.select() return_str = 'Список групп:\n' for group in groups: return_str += group.group_name + '\n' bot.send_message(text=return_str, chat_id=message.chat.id) logger.info( f'Admin {user.first_name} {user.last_name} add new group - {message.text}' ) elif user.status == 'zavhoz_check_equipment': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'Zavhoz'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: looking_invent_num = message.text try: Equipment.get(invent_num=looking_invent_num) except Exception as e: logger.info( f'User {user.first_name} {user.last_name} looking for unexisting equipment with {looking_invent_num} invent number' ) bot.send_message( chat_id=user.telegram_id, text= f'Оборудование с инвентарным номером {looking_invent_num} не стоит на балансе' ) User.update(status='').where(User.id == user.id).execute() return found_equipments = Equipment.select().where( Equipment.invent_num == looking_invent_num) for item in found_equipments: bot.send_message(chat_id=user.telegram_id, text=equipment_info(equipment=item)) logger.info( f'User {user.first_name} {user.last_name} looked info about {looking_invent_num} invent number' ) elif user.status == 'invent_search': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'Inventarization'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: invent_num = message.text found_equipments = Equipment.select().where( Equipment.invent_num == invent_num) if found_equipments.count() == 0: bot.send_message( chat_id=user.telegram_id, text= f'Оборудование с инвентарным номером {invent_num} не стоит на балансе' ) else: for equipment in found_equipments: bot.send_message( chat_id=user.telegram_id, text=equipment_info(equipment), reply_markup=get_equipment_reply_markup(equipment)) elif user.status == 'serial_search': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'Inventarization'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: serial_num = message.text found_equipments = Equipment.select().where( Equipment.serial_num == serial_num) if found_equipments.count() == 0: bot.send_message( chat_id=user.telegram_id, text= f'Оборудование с серийным номером {serial_num} не стоит на балансе' ) else: for equipment in found_equipments: bot.send_message( chat_id=user.telegram_id, text=equipment_info(equipment), reply_markup=get_equipment_reply_markup(equipment)) elif user.status.split('_')[0] == 'edit-type': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'Inventarization'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: equipment = Equipment.get(id=user.status.split('_')[1]) Equipment.update(type=message.text).where( Equipment.id == equipment.id).execute() equipment = Equipment.get(id=user.status.split('_')[1]) bot.send_message( chat_id=user.telegram_id, text=equipment_info(equipment), reply_markup=get_equipment_reply_markup(equipment)) send_equipment_info_to_google_sheet(equipment) logger.info( f'User {user.first_name} {user.last_name} edit equipment ID {equipment.it_id}: new type is {equipment.type}' ) elif user.status.split('_')[0] == 'edit-mark': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'Inventarization'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: equipment = Equipment.get(id=user.status.split('_')[1]) Equipment.update(mark=message.text).where( Equipment.id == equipment.id).execute() equipment = Equipment.get(id=user.status.split('_')[1]) bot.send_message( chat_id=user.telegram_id, text=equipment_info(equipment), reply_markup=get_equipment_reply_markup(equipment)) send_equipment_info_to_google_sheet(equipment) logger.info( f'User {user.first_name} {user.last_name} edit equipment ID {equipment.it_id}: new mark is {equipment.mark}' ) elif user.status.split('_')[0] == 'edit-model': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'Inventarization'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: equipment = Equipment.get(id=user.status.split('_')[1]) Equipment.update(model=message.text).where( Equipment.id == equipment.id).execute() equipment = Equipment.get(id=user.status.split('_')[1]) bot.send_message( chat_id=user.telegram_id, text=equipment_info(equipment), reply_markup=get_equipment_reply_markup(equipment)) send_equipment_info_to_google_sheet(equipment) logger.info( f'User {user.first_name} {user.last_name} edit equipment ID {equipment.it_id}: new model is {equipment.model}' ) elif user.status.split('_')[0] == 'edit-serial': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'Inventarization'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: equipment = Equipment.get(id=user.status.split('_')[1]) Equipment.update(serial_num=message.text).where( Equipment.id == equipment.id).execute() equipment = Equipment.get(id=user.status.split('_')[1]) bot.send_message( chat_id=user.telegram_id, text=equipment_info(equipment), reply_markup=get_equipment_reply_markup(equipment)) send_equipment_info_to_google_sheet(equipment) logger.info( f'User {user.first_name} {user.last_name} edit equipment ID {equipment.it_id}: new serial num is {equipment.serial_num}' ) elif user.status.split('/')[0] == 'create_movement': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'Inventarization'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: campus = user.status.split('/')[1].split('-')[1] room = message.text equipment = Equipment.get( id=user.status.split('/')[2].split('-')[1]) movement = Movement.create( equipment=equipment, campus=f'УК {campus}' if not campus == 'spisanie' else 'Списание', room=room) equipment = Equipment.get( id=user.status.split('/')[2].split('-')[1]) bot.send_message( chat_id=user.telegram_id, text=equipment_info(equipment), reply_markup=get_equipment_reply_markup(equipment)) send_movement_to_google_sheet(equipment, movement) logger.info( f'User {user.first_name} {user.last_name} move equipment ID {equipment.it_id}: new location is {movement.campus} {movement.room}' ) elif user.status.split(':')[0] == 'Edit_person_info': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'PhonesAdmin'): bot.send_message(chat_id=user.telegram_id, text='У Вас нет доступа к этой функции') logger.info( f'User {user.first_name} {user.last_name} had unsupported status!' ) else: edit_parameter = user.status.split(':')[1].split('_')[0] person = Person.get(id=user.status.split(':')[1].split('_')[1]) if edit_parameter == 'surname': Person.update(surname=message.text).where( Person.id == person.id).execute() elif edit_parameter == 'name': Person.update(name=message.text).where( Person.id == person.id).execute() elif edit_parameter == 'patronymic': Person.update(patronymic=message.text).where( Person.id == person.id).execute() elif edit_parameter == 'phone': Person.update(phone=message.text).where( Person.id == person.id).execute() elif edit_parameter == 'position': Person.update(position=message.text).where( Person.id == person.id).execute() elif edit_parameter == 'email': Person.update(email=message.text).where( Person.id == person.id).execute() elif edit_parameter == 'photo': bot.send_message( chat_id=message.chat.id, text= 'Для редактирования фото сотрудника необходимо прислать фото, а не текст!' ) return person = Person.get(id=user.status.split(':')[1].split('_')[1]) update_person_info_in_google(person) if not person.photo == '': bot.send_photo(chat_id=message.chat.id, photo=person.photo, caption=get_person_info(person), reply_markup=get_contact_reply_markup( user, person)) else: bot.send_message(chat_id=message.chat.id, text=get_person_info(person), reply_markup=get_contact_reply_markup( user, person)) bot.send_contact(chat_id=message.chat.id, phone_number=person.phone, first_name=person.surname, last_name=f"{person.name} {person.patronymic}") elif user.status.split('/')[0] == 'phone_search': search_parameter = user.status.split('/')[1] template = message.text founded_persons = None if search_parameter == 'surname': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'PhonesAdmin'): founded_persons = Person.select().where( Person.surname == template).where(Person.actual == 'True') else: founded_persons = Person.select().where( Person.surname == template) elif search_parameter == 'name': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'PhonesAdmin'): founded_persons = Person.select().where( Person.name == template.split(' ')[0] and Person.patronymic == template.split(' ')[1]).where( Person.actual == 'True') else: founded_persons = Person.select().where( Person.name == template.split(' ')[0] and Person.patronymic == template.split(' ')[1]) elif search_parameter == 'number': if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'PhonesAdmin'): founded_persons = Person.select().where( Person.phone == template).where(Person.actual == 'True') else: founded_persons = Person.select().where( Person.phone == template) if user not in User.select(User).join(Links).join(Group).where( Group.group_name == 'PhonesAdmin'): founded_persons = founded_persons.where(Person.actual == 'True') if founded_persons.count() > 0: for person in founded_persons: if not person.photo == '': bot.send_photo(chat_id=message.chat.id, photo=person.photo, caption=get_person_info(person), reply_markup=get_contact_reply_markup( user, person)) else: bot.send_message(chat_id=message.chat.id, text=get_person_info(person), reply_markup=get_contact_reply_markup( user, person)) bot.send_contact( chat_id=message.chat.id, phone_number=person.phone, first_name=person.surname, last_name=f"{person.name} {person.patronymic}") else: bot.send_message(chat_id=message.chat.id, text='Я никого не нашел по введенным Вами данным') else: bot.send_message( chat_id=message.chat.id, text= 'Воспользуйтесь кнопками или командами (/help) для выбора функции') User.update(status='').where(User.id == user.id).execute()