Example #1
0
    def get_date(message):
        if message.text == '/exit':
            return_to_menu()
        elif re.fullmatch(r'\d{1,2}\s\d{1,2}\s\d{1,2}', message.text):
            in_date = message.text.split()
            cw_ = Course.Classwork(call.data['c_id'], call.data['cw_id'])

            try:
                date = datetime.date(2000 + int(in_date[0]), int(in_date[1]),
                                     int(in_date[2])).strftime('%d %b %Y')
            except ValueError:
                botHelper.send_mes(
                    msgs[get_lang(call.message.chat.id)]['teacher']
                    ['management']['wrong_input'], message.messasge_id)
                bot.register_next_step_handler(message, get_date)
            else:
                cw_.date = date
                cw_.name = date

                return_to_menu()
        else:
            botHelper.send_mes(
                msgs[get_lang(call.message.chat.id)]['teacher']['management']
                ['wrong_input'], message.messasge_id)
            bot.register_next_step_handler(message, get_date)
Example #2
0
def announce(call):
    def return_to_menu():
        new_mes = botHelper.send_mes('empty', call.message.chat.id)
        botHelper.renew_menu(call, new_mes)
        back(call, True)

    def cancel():
        botHelper.send_mes(msgs[lang]['teacher']['announce']['cancel'])
        return_to_menu()

    def send():
        course_ = Course.Course(call.data['c_id'])

        for part in course_.participants:
            try:
                botHelper.send_mes(
                    msgs[lang]['teacher']['announce']['got_announce'].format(
                        course_.name), part.id)
                botHelper.send_mes(announce_info['text'], part.id)
                for file, caption in zip(announce_info['file'],
                                         announce_info['file_caption']):
                    bot.send_document(part.id, file, caption=caption)
            except TBotApiException:
                continue

        botHelper.send_mes(msgs[lang]['teacher']['announce']['sent'],
                           call.message.chat.id)

        return_to_menu()

    def get_file(message):
        if message.text == '/exit':
            cancel()
        elif message.text == '/send':
            send()
        else:
            if message.document:
                announce_info['file'].append(message.document.file_id)
                announce_info['file_caption'].append(message.caption)
                bot.register_next_step_handler(message, get_file)

    def get_text(message):
        if message.text == '/exit':
            cancel()
        else:
            announce_info['text'] = message.text

            botHelper.send_mes(msgs[lang]['teacher']['announce']['files'],
                               call.message.chat.id)
            bot.register_next_step_handler(message, get_file)

    call.data = json.loads(call.data)
    lang = get_lang(call.message.chat.id)
    announce_info = {'text': '', 'file': [], 'file_caption': []}

    botHelper.edit_mes(msgs[lang]['teacher']['announce']['begin'], call)
    botHelper.send_mes(msgs[lang]['teacher']['announce']['input_text'],
                       call.message.chat.id)
    bot.register_next_step_handler(call.message, get_text)
Example #3
0
    def get_text(message):
        if message.text == '/exit':
            cancel()
        else:
            announce_info['text'] = message.text

            botHelper.send_mes(msgs[lang]['teacher']['announce']['files'],
                               call.message.chat.id)
            bot.register_next_step_handler(message, get_file)
Example #4
0
    def name(msg):
        if re.fullmatch(r"[a-zA-Zа-яА-Я]+ [a-zA-Zа-яА-Я ]+", msg.text):
            user.name = msg.text

            menu_command(msg)
        else:
            botHelper.send_mes(
                msgs[lang]['common']['registration']['wrong_name'],
                message.chat.id)
            bot.register_next_step_handler(message, name)
Example #5
0
 def desc(message):
     length = len(message.text)
     if UI.constants.COURSE_DESC_LENGTH_MIN <= length <= UI.constants.COURSE_DESC_LENGTH_MAX:
         course_info['desc'] = message.text
         idle()
     else:
         botHelper.send_mes(
             msgs[lang]['teacher']['course_create']['error_desc_length'],
             chat_id)
         message.text = '/desc'
         get_user_command(message)
Example #6
0
 def lock(message):
     if message.text == '0':
         course_info['lock'] = None
         idle()
     elif re.fullmatch(r'\d+', message.text):
         course_info['lock'] = time.time() + (int(message.text) * 24 * 60 *
                                              60)
         idle()
     else:
         botHelper.send_mes(msgs[lang]['common']['wrong_input'], chat_id)
         message.text = '/lock'
         get_user_command(message)
Example #7
0
    def get_hmark(message):
        if message.text == '/exit':
            cancel()
        else:
            if message.text != '0' and re.fullmatch(r'\d+', message.text):
                task_info['hmark'] = int(message.text)

                create()
            else:
                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']['error_max_mark'],
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_hmark)
Example #8
0
    def create():
        name = task_info['name']
        if not name:
            name = msgs[lang]['teacher']['task_create']['name'] + str(
                len(Course.Course(call.data['c_id']).tasks) + 1)

        Course.Task(course_id=call.data['c_id'],
                    name=name,
                    description=task_info['desc'].format(task_info['hmark']),
                    highest_mark=task_info['hmark'])

        botHelper.send_mes(msgs[lang]['teacher']['task_create']['created'],
                           call.message.chat.id)
        return_to_menu()
Example #9
0
    def get_desc(message):
        if message.text == '/exit':
            cancel()
        else:
            if len(message.text) <= UI.constants.TASK_DESC_MAX_LENGTH:
                if message.text != '/no':
                    task_info['desc'] += message.text

                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']['input_max_mark'],
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_hmark)
            else:
                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']
                    ['error_length'].format(UI.constants.TASK_DESC_MAX_LENGTH),
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_desc)
Example #10
0
    def get_mark(message):
        if message.text == '/exit':
            return_to_menu()
        elif message.text == '-1':
            mark.value = None
        elif re.fullmatch(r'\d+', message.text):
            if int(message.text) <= task_.highest_mark:
                mark.value = int(message.text)

                return_to_menu()
            else:
                botHelper.send_mes(msgs[get_lang(call.message.chat.id)]
                                   ['teacher']['management']['error_mark'])
                bot.register_next_step_handler(message, get_mark)
        else:
            botHelper.send_mes(msgs[get_lang(
                call.message.chat.id)]['teacher']['management']['wrong_input'])
            bot.register_next_step_handler(message, get_mark)
Example #11
0
    def get_name(message):
        if message.text == '/exit':
            cancel()
            return_to_menu()
        else:
            if len(message.text) <= UI.constants.TASK_NAME_MAX_LENGTH:
                if message.text != '/no':
                    task_info['name'] = message.text

                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']['input_desc'],
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_desc)
            else:
                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']
                    ['error_length'].format(UI.constants.TASK_NAME_MAX_LENGTH),
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_name)
Example #12
0
def menu_command(message):
    lang = get_lang(message.chat.id)

    if User.User(message.chat.id).type_u == 'unlogined':
        botHelper.send_mes(msgs[lang]['common']['new_user'], message.chat.id)
    else:
        if User.User(message.chat.id).type_u == 'student':
            markup = mkp.create(lang, [
                cbt.course_list_of('all', lang),
                cbt.course_list_of('my', lang)
            ],
                                include_back=False)

            botHelper.send_mes(msgs[get_lang(
                message.chat.id)]['common']['menu'],
                               message.chat.id,
                               markup=markup)
        else:
            markup = mkp.create(lang, [
                cbt.course_list_of('all', lang),
                cbt.course_list_of('my', lang)
            ], [tbt.manage_list(lang)], [tbt.new_course(lang)],
                                include_back=False)

            botHelper.send_mes(msgs[get_lang(
                message.chat.id)]['common']['menu'],
                               message.chat.id,
                               markup=markup)
Example #13
0
def registration(message):
    def name(msg):
        if re.fullmatch(r"[a-zA-Zа-яА-Я]+ [a-zA-Zа-яА-Я ]+", msg.text):
            user.name = msg.text

            menu_command(msg)
        else:
            botHelper.send_mes(
                msgs[lang]['common']['registration']['wrong_name'],
                message.chat.id)
            bot.register_next_step_handler(message, name)

    lang = get_lang(message.chat.id)

    if User.User(message.chat.id).type_u == 'unlogined':
        try:
            user = User.User(id=message.chat.id,
                             username=message.from_user.username,
                             name='noname')
            botHelper.send_mes(msgs[lang]['common']['registration']['teacher'],
                               message.chat.id)
        except User.TeacherAccessDeniedError:
            user = User.User(id=message.chat.id,
                             name='noname',
                             group='1',
                             email='*****@*****.**')
            botHelper.send_mes(
                msgs[lang]['common']['registration']['mere_human'],
                message.chat.id)

        botHelper.send_mes(msgs[lang]['common']['registration']['input'],
                           message.chat.id)
        bot.register_next_step_handler(message, name)
    else:
        botHelper.send_mes(msgs[lang]['common']['registration']['already'],
                           message.chat.id)
Example #14
0
    def idle():
        if course_info['lock'] is None:
            t = None
        else:
            t = UI.to_dtime(course_info['lock'])

        if course_info['name'] and course_info['desc']:
            c = creating['valid']
        elif course_info['name'] and not course_info['desc']:
            c = creating['desc']
        elif not course_info['name'] and course_info['desc']:
            c = creating['name']
        else:
            c = creating['both']

        text = msgs[get_lang(
            chat_id)]['teacher']['course_create']['new_course'].format(
                name=course_info['name'],
                desc=course_info['desc'],
                lock=t,
                create=c)

        msg = botHelper.send_mes(text, chat_id)
        bot.register_next_step_handler(msg, get_user_command)
Example #15
0
    def send():
        course_ = Course.Course(call.data['c_id'])

        for part in course_.participants:
            try:
                botHelper.send_mes(
                    msgs[lang]['teacher']['announce']['got_announce'].format(
                        course_.name), part.id)
                botHelper.send_mes(announce_info['text'], part.id)
                for file, caption in zip(announce_info['file'],
                                         announce_info['file_caption']):
                    bot.send_document(part.id, file, caption=caption)
            except TBotApiException:
                continue

        botHelper.send_mes(msgs[lang]['teacher']['announce']['sent'],
                           call.message.chat.id)

        return_to_menu()
Example #16
0
 def cancel():
     botHelper.send_mes(msgs[lang]['teacher']['task_create']['canceled'],
                        call.message.chat.id)
     return_to_menu()
Example #17
0
 def return_to_menu():
     new_mes = botHelper.send_mes('empty', call.message.chat.id)
     botHelper.renew_menu(call, new_mes)
     back(call, True)
Example #18
0
def start(message):
    botHelper.send_mes(msgs[get_lang(message.chat.id)]['common']['start'],
                       message.chat.id)
Example #19
0
 def cancel():
     botHelper.send_mes(msgs[lang]['teacher']['announce']['cancel'])
     return_to_menu()
Example #20
0
    def get_user_command(message):
        if message.text == '/name':
            text = msgs[lang]['teacher']['course_create']['name_input'].format(
                UI.constants.COURSE_NAME_LENGTH_MIN,
                UI.constants.COURSE_NAME_LENGTH_MAX)

            botHelper.send_mes(text, chat_id)
            bot.register_next_step_handler(message, name)
        elif message.text == '/desc':
            text = msgs[lang]['teacher']['course_create']['desc_input'].format(
                UI.constants.COURSE_DESC_LENGTH_MIN,
                UI.constants.COURSE_DESC_LENGTH_MAX)

            botHelper.send_mes(text, chat_id)
            bot.register_next_step_handler(message, desc)
        elif message.text == '/lock':
            text = msgs[lang]['teacher']['course_create']['lock_input']

            botHelper.send_mes(text, chat_id)
            bot.register_next_step_handler(message, lock)
        elif message.text == '/create':
            if not course_info['name'] or not course_info['desc']:
                botHelper.send_mes(
                    msgs[lang]['teacher']['course_create']['name_and_desc'],
                    chat_id)
                bot.register_next_step_handler(message, get_user_command)
            else:
                c = Course.Course(owner_id=chat_id, name=course_info['name'])
                c.description = course_info['desc']
                c.entry_restriction = course_info['lock']

                botHelper.send_mes(
                    msgs[lang]['teacher']['course_create']['created'], chat_id)
                menu_command(message)
        elif message.text == '/exit':
            botHelper.send_mes(
                msgs[lang]['teacher']['course_create']['canceled'], chat_id)
            menu_command(message)
        else:
            botHelper.send_mes(
                msgs[lang]['teacher']['course_create']['wrong_command'],
                chat_id)
            bot.register_next_step_handler(message, get_user_command)
Example #21
0
def new_task(call):
    def return_to_menu():
        new_mes = botHelper.send_mes('empty', call.message.chat.id)
        botHelper.renew_menu(call, new_mes)
        back(call, True)

    def cancel():
        botHelper.send_mes(msgs[lang]['teacher']['task_create']['canceled'],
                           call.message.chat.id)
        return_to_menu()

    def create():
        name = task_info['name']
        if not name:
            name = msgs[lang]['teacher']['task_create']['name'] + str(
                len(Course.Course(call.data['c_id']).tasks) + 1)

        Course.Task(course_id=call.data['c_id'],
                    name=name,
                    description=task_info['desc'].format(task_info['hmark']),
                    highest_mark=task_info['hmark'])

        botHelper.send_mes(msgs[lang]['teacher']['task_create']['created'],
                           call.message.chat.id)
        return_to_menu()

    def get_hmark(message):
        if message.text == '/exit':
            cancel()
        else:
            if message.text != '0' and re.fullmatch(r'\d+', message.text):
                task_info['hmark'] = int(message.text)

                create()
            else:
                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']['error_max_mark'],
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_hmark)

    def get_desc(message):
        if message.text == '/exit':
            cancel()
        else:
            if len(message.text) <= UI.constants.TASK_DESC_MAX_LENGTH:
                if message.text != '/no':
                    task_info['desc'] += message.text

                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']['input_max_mark'],
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_hmark)
            else:
                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']
                    ['error_length'].format(UI.constants.TASK_DESC_MAX_LENGTH),
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_desc)

    def get_name(message):
        if message.text == '/exit':
            cancel()
            return_to_menu()
        else:
            if len(message.text) <= UI.constants.TASK_NAME_MAX_LENGTH:
                if message.text != '/no':
                    task_info['name'] = message.text

                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']['input_desc'],
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_desc)
            else:
                botHelper.send_mes(
                    msgs[lang]['teacher']['task_create']
                    ['error_length'].format(UI.constants.TASK_NAME_MAX_LENGTH),
                    call.message.chat.id)
                bot.register_next_step_handler(message, get_name)

    call.data = json.loads(call.data)
    lang = get_lang(call.message.chat.id)
    task_info = {
        'name': '',
        'desc': msgs[lang]['teacher']['task_create']['max_mark'],
        'hmark': 0
    }

    botHelper.edit_mes(msgs[lang]['teacher']['task_create']['begin'], call)
    botHelper.send_mes(msgs[lang]['teacher']['task_create']['input_name'],
                       call.message.chat.id)
    bot.register_next_step_handler(call.message, get_name)