コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
0
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))
コード例 #7
0
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)
コード例 #8
0
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)
コード例 #9
0
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)
コード例 #10
0
def search_aud(message):
    bot.send_message(chat_id=message.from_user.id,
                     text=f'Введи номер потрібної аудиторії')

    bot.register_next_step_handler(message, get_aud)
コード例 #11
0
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)
コード例 #12
0
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)
コード例 #13
0
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)