def send_message_or_file(message, subject_id): if message.text == '/cancel': bot.send_message(chat_id=message.from_user.id, text=f'Дія була скасована {emojize(":white_check_mark:", use_aliases=True)}') bot.clear_step_handler_by_chat_id(chat_id=message.from_user.id) elif message.content_type not in ['text', 'photo', 'document']: bot.send_message(chat_id=message.from_user.id, text=f'Файл/повідомлення не відправлено {emojize(":x:", use_aliases=True)}\n' 'Некорректний формат\n\n' 'Відправте файл/повідомлення боту і він його передасть всім студентам цього предмету\n\n' 'Щоб скасувати дію можна скористатися командою /cancel') bot.register_next_step_handler(message, send_message_or_file, subject_id) else: subject = Subject.get_subject_fullname_by_id(subject_id) students = [] for group in Group.get_groups(): for student in Student.get_students_by_group(group.id): students.append(student) caption = '' if message.caption is None else message.caption if message.content_type == 'text': for student in students: try: bot.send_message(chat_id=student.id, text=f'Повідомлення по предмету {subject}:\n\n{message.text}') except ApiException: continue bot.send_message(chat_id=message.from_user.id, text=f'Повідомлення було відправлено ' f'{emojize(":white_check_mark:", use_aliases=True)}') elif message.content_type == 'document': for student in students: try: bot.send_document(chat_id=student.id, data=message.document.file_id, caption=f'Методичний матеріал з предмету {subject} ' f'\n\n{caption}') except ApiException: continue bot.send_message(chat_id=message.from_user.id, text=f'Файл було відправлено {emojize(":white_check_mark:", use_aliases=True)}') save_file_to_local(message.document.file_id, subject) elif message.content_type == 'photo': for student in students: try: bot.send_photo(chat_id=student.id, photo=message.photo[-1].file_id, caption=f'Методичний матеріал з предмету {subject} ' f'\n\n{caption}') except ApiException: continue bot.send_message(chat_id=message.from_user.id, text=f'Фото було відправлено {emojize(":white_check_mark:", use_aliases=True)}') save_file_to_local(message.photo[-1].file_id, subject)
def get_subject_for_share(call): subject_id = call.data.split('_')[1] message = bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text='Відправте файл або повідомлення боту і він його передасть ' 'всім студентам цього предмету ' f'{emojize(":incoming_envelope:", use_aliases=True)}') bot.register_next_step_handler(message, send_message_or_file, subject_id)
def get_gradebook_id(message, student): gradebook_id = message.text if bool(re.search('^\d+(\.\d+)*$', gradebook_id)) is False: message = bot.send_message( chat_id=message.from_user.id, text='Неккоректний ввід\nВведи номер своєї залікової книжки') bot.register_next_step_handler(message, get_gradebook_id, student) else: student.gradebook_id = gradebook_id message = bot.send_message(chat_id=message.from_user.id, text='Введи свій номер телефону') bot.register_next_step_handler(message, get_phone, student)
def name_event(message): if message.text == '/cancel': bot.send_message( chat_id=message.from_user.id, text= f'Дія була скасована {emojize(":white_check_mark:", use_aliases=True)}' ) bot.clear_step_handler_by_chat_id(chat_id=message.from_user.id) return event = Event.add_event(name=message.text) message = bot.send_message(chat_id=message.from_user.id, text="Місце проведення") bot.register_next_step_handler(message, place_event, event.id)
def get_name(message, student): name = message.text if bool(re.search("[^А-ЯҐЄІIЇа-яiієїґ' -]+", name)) or len(name.split(' ')) != 3 or len(name) > 256: message = bot.send_message( chat_id=message.from_user.id, text=f'Неккоректний ввід {emojize(":x:", use_aliases=True)}' f'\nВведи ПІБ українською мовою') bot.register_next_step_handler(message, get_name, student) else: student.name = name message = bot.send_message(chat_id=message.from_user.id, text='Введи номер своєї залікової книжки') bot.register_next_step_handler(message, get_gradebook_id, student)
def get_phone(message, student): phone = message.text if bool(re.search("[^0-9+]+", phone)) or len(phone) > 13: message = bot.send_message( chat_id=message.from_user.id, text=f'Неккоректний ввід {emojize(":x:", use_aliases=True)}\n' f'Введи свій номер телефону') bot.register_next_step_handler(message, get_phone, student) else: student.phone = phone student.add_student(student) success_message = f'Вітаю, ти зареєстрований {emojize(":white_check_mark:", use_aliases=True)}' bot.send_message(chat_id=message.from_user.id, text=success_message, reply_markup=make_menu_keyboard(message, other_fac=False))
def get_group(message): group_id = Group.get_id_by_group(message.text) if group_id is False: bot.clear_step_handler_by_chat_id(message.from_user.id) bot.send_message(chat_id=message.from_user.id, text='Вибери свою групу:') bot.register_next_step_handler_by_chat_id(message.from_user.id, get_group) else: student = Student() student.id = message.from_user.id student.username = message.from_user.username student.group_id = group_id message = bot.send_message(chat_id=message.from_user.id, text='Введи ПІБ українською мовою') bot.register_next_step_handler(message, get_name, student)
def register_on_event(call): event_id = call.data.split('_')[1] chat_id = call.from_user.id if Group.get_group_by_id( Student.get_student_by_id(chat_id).group_id) == 'other': message = bot.send_message( chat_id=chat_id, text="Введіть прізвище ім'я факультет групу\n" "<b>Наприклад:</b> <i>Петров Петро ФЕУ 123</i>", parse_mode='html') bot.register_next_step_handler(message, reg_on_event_other, event_id) else: EventVisitor.add_visitor(event_id, chat_id) bot.edit_message_text( chat_id=chat_id, message_id=call.message.message_id, text= f'Реєстрація пройшла успішно {emojize(":white_check_mark:", use_aliases=True)}' ) user = Student.get_student_by_id(chat_id)
def get_parameter_to_change(call): event_id = call.data.split('_')[1] if call.data.startswith('name_'): message = bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text='Нова назва') bot.register_next_step_handler(message, change_event_name, event_id) elif call.data.startswith('place_'): message = bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text='Нове місце') bot.register_next_step_handler(message, change_event_place, event_id) elif call.data.startswith('date_'): message = bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text='Нова дата') bot.register_next_step_handler(message, change_event_date, event_id) elif call.data.startswith('time_'): message = bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text='Новий час') bot.register_next_step_handler(message, change_event_time, event_id)
def search_aud(message): bot.send_message(chat_id=message.from_user.id, text=f'Введи номер потрібної аудиторії') bot.register_next_step_handler(message, get_aud)
def search_aud_again(call): message = bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text=f'Введи номер потрібної аудиторії') bot.register_next_step_handler(message, get_aud)
def date_event(message, event_id): Event.update_event(event_id=event_id, date=message.text) message = bot.send_message(chat_id=message.from_user.id, text="Час проведення") bot.register_next_step_handler(message, time_event, event_id)
def create_event(message): message = bot.edit_message_text(chat_id=message.from_user.id, message_id=message.message.message_id, text='Назва заходу') bot.register_next_step_handler(message, name_event)