예제 #1
0
파일: bot.py 프로젝트: rtix/course_bot
    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)
예제 #2
0
파일: bot.py 프로젝트: rtix/course_bot
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)
예제 #3
0
def create(message):
    l = [message.text.split('\n')]
    command = "INSERT INTO `all`(`user_id`, `event_id`, `name`, `date`, `time`, `adress`, `theme`, `description`)" \
              " VALUES('{}, {}, {}, {}, {}, {}, {}, {}')".format(message.from_user.id, cnt, l[0], l[1], l[2], l[3], the, l[4])
    cursor.execute(command)
    db.commit()
    bot.send_message(message.chat.id, 'ГОТОВО!')
    bot.register_next_step_handler(message, start(False))
예제 #4
0
파일: bot.py 프로젝트: rtix/course_bot
    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)
예제 #5
0
파일: bot.py 프로젝트: rtix/course_bot
 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)
예제 #6
0
파일: bot.py 프로젝트: rtix/course_bot
    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)
예제 #7
0
파일: bot.py 프로젝트: rtix/course_bot
    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)
예제 #8
0
파일: bot.py 프로젝트: rtix/course_bot
    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)
예제 #9
0
파일: bot.py 프로젝트: rtix/course_bot
    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)
예제 #10
0
파일: bot.py 프로젝트: rtix/course_bot
    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)
예제 #11
0
파일: bot.py 프로젝트: rtix/course_bot
    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)
예제 #12
0
파일: bot.py 프로젝트: rtix/course_bot
def do_tsk(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 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)

    call.data = json.loads(call.data)
    task_ = Course.Task(call.data['c_id'], call.data['t_id'])
    mark = Course.Mark(call.data['c_id'], call.data['t_id'], call.data['u_id'])

    text = msgs['mark_one'].format(task=task_.name,
                                   user=User.User(call.data['u_id']).name,
                                   mark=mark.value,
                                   max=task_.highest_mark)

    botHelper.edit_mes(text, call)
    bot.register_next_step_handler(call.message, get_mark)
예제 #13
0
파일: bot.py 프로젝트: rtix/course_bot
    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)
예제 #14
0
파일: bot.py 프로젝트: rtix/course_bot
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)
예제 #15
0
def theme(message):
    global the
    the = message.text
    bot.send_message(message.chat.id, "Напишите информацию о  вашем событии по шаблону \n Название \n Дата \n Время "
                                      "\n Место \n проведения \n Описание")
    bot.register_next_step_handler(message, create)
예제 #16
0
파일: bot.py 프로젝트: rtix/course_bot
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)