Example #1
0
def first_menu(message):
    try:
        chat_id = message.chat.id
        markup = types.ReplyKeyboardMarkup(True, True)

        history = types.InlineKeyboardButton(content.BUTTON_HISTORY)
        duty = types.InlineKeyboardButton(content.BUTTON_MONEY)
        report = types.InlineKeyboardButton(content.BUTTON_REPORT)
        unreal = types.InlineKeyboardButton(content.BUTTON_UNREALSUM)

        markup.add(history)
        markup.add(duty)
        markup.add(report)
        markup.add(unreal)

        bot.send_message(chat_id,
                         content.STR_SELECT_FROM_LIST(),
                         reply_markup=markup)
        bot.register_next_step_handler(message, main_menu)

        return
    except Exception as e:
        bot.reply_to(
            message,
            'error first menu. Contact the administrator and please DONT use bot.'
        )
def classroom_name_request(message, teacher, classroom):
    ru_text = "Отправьте новое название класса"
    en_text = "Send the name of the classroom"
    text = ru_text if teacher.language_code == 'ru' else en_text

    bot.send_message(message.chat.id, text)
    bot.register_next_step_handler(message, classroom_name_receive, classroom)
Example #3
0
def money_intention_request(message):
    user = User.get(message.chat.id)

    ru_text = 'Выбери, куда пойдут твои деньги: *другу* или *на благотворительность*.\n\n' \
              'Если выберешь *другу*, то тебе нужно будет назначить своего друга ' \
              'в качестве судьи на этой привычке. ' \
              'Он будет следить за её выполнением и пинать тебя с моей помощью. ' \
              'Ему же ты должен будешь заплатить штраф в случае провала.\n\n' \
              'Если выберещь *благотворительность*, то штрафы будешь платить мне. ' \
              'А я 80% денег пожертвую детишкам на интернет: https://giveinternet.org'
    en_text = "Choose where your money will go: *to a friend* or *to charity*.\n\n" \
              "If you choose *friend* you will need to assign your friend " \
              "as the judge on this habit. " \
              "He will monitor execution and kick you with my help. " \
              "And you will have to pay a fine to him in case of failure. \n\n" \
              "If you choose *charity*, then you will pay fines to me. " \
              "And I will donate (80% of the money) Internet access to students in need: https://giveinternet.org"
    text = ru_text if user.language_code == 'ru' else en_text

    bot.send_message(message.chat.id,
                     text,
                     reply_markup=markups.get_money_intention_markup(
                         message.chat.id),
                     parse_mode='Markdown')
    bot.register_next_step_handler(message, money_intention_receive)
Example #4
0
def get_street(message):
    if message.text == '/end':
        return
    cid = message.chat.id
    db = dbaccess.SQLka()
    streets = db.select(fields=['street'],
                        tables=[('Buildings', 'buildings')],
                        constraints=[('street', dbaccess.like(message.text))],
                        modifyers=['DISTINCT'])
    db.close()
    print(streets)
    if len(streets) > 1:
        # TODO Add keyboard
        msg = bot.send_message(
            message.chat.id, """
        Укажите более точное название улицы
        """)
        bot.register_next_step_handler(msg, get_street)
        return
    if len(streets) == 0:
        bot.send_message(cid,
                         text="""
        К сожалению, адрес не найден. Попробуй ещё раз! 
        """)
        get_building(cid)
        return
    shelf[str(cid)]['street'] = streets[0][0]
    get_number(cid)
Example #5
0
def preparing_game_1(message, place, towns, forbidden_letters, state=0):
    for i in range(1, 4):
        if place[-i] not in forbidden_letters:
            sym = place[-i].upper()
            break

    nickname = nickname_define(message)       
    used_towns = make_query(f'''select Town from {nickname}; ''')
    used_towns = [town[0] for town in used_towns]
    choice = list()

    for town in towns:
        if sym == town[0] and town not in used_towns: 
            choice.append(town)

    if len(choice) == 0:
        defeat(message, sym)
    else:
        if state == 0:
            ask_text = take_game_phrase('write_town_with_letter').format(sym)
        elif state == 1:
            ask_text = take_game_phrase('write_other_town_with_letter').format(sym)
        else:
            ask_text = take_game_phrase('write_town_with_other_letter').format(sym)

        sent = bot.send_message(message.chat.id, ask_text)
        bot.register_next_step_handler(sent, game_play_1)
Example #6
0
def send_money(message):
    try:
        chat_id = message.chat.id

        send = types.InlineKeyboardButton(content.BUTTON_SENDMONEY)
        homepage = types.InlineKeyboardButton(content.BUTTON_MAIN_MENU)
        simbalance = types.InlineKeyboardButton(content.BUTTON_SIMBALANCE)

        markup = types.ReplyKeyboardMarkup(True, True)
        markup.add(send)
        markup.add(simbalance)
        markup.add(homepage)

        bot.send_message(
            chat_id,
            'Для того чтобы узнать баланс нажмите кнопку\nЕсли баланс получить не удалось - можете попробовать еще раз.',
            reply_markup=markup)
        bot.register_next_step_handler(message, funcmenu.func_send_money)

        #отправить деньги сделать перевод (реквест)

    except Exception as e:
        bot.reply_to(
            message,
            'Error sendmoney menu. Contact the administrator and please DONT use bot.'
        )
Example #7
0
def option_select(message):
    chat_id = message.chat.id
    user = session.query(User).filter_by(name=username).one()

    # FIXME:
    # if role == Role.ADMIN: ask_again_to_be_sure
    # if my_role == Role.ADMIN: reject changing (!)   <- check
    global is_checked

    if message.current_group.user_has_role(user, Role.ADMIN):
        bot.send_message(
            chat_id,
            "Вы не можете поменять себе роль, так как Вы -- администратор.")
    else:
        role = Role(message.text)

        if role == Role.ADMIN and not is_checked:
            bot.send_message(
                chat_id,
                "Вы уверены, что хотите дать этому пользователю права администратора?"
            )
            is_checked = True
            bot.register_next_step_handler(message, option_select)
        else:
            message.current_group.add_role_to_user(user, role)

            bot.send_message(
                chat_id,
                "Роль пользователя'" + user.name + "' успешно изменена!")
            bot.send_message(chat_id, "Новая роль пользователя: " + str(role))

    if is_checked:
        is_checked = False

    send_main_menu(message)
Example #8
0
def submission_assessment_receive(message, submission_id):
    teacher = Teacher.get(message.chat.id)
    if len(message.text) > 15:
        ru_text = "Длина оценки не должна превышать 15 символов. Попробуйте ещё раз"
        en_text = "The length of the rate mustn't exceed 15 characters. Try again"
        text = ru_text if teacher.language_code == 'ru' else en_text
        bot.send_message(message.chat.id,
                         text,
                         reply_markup=markups.get_assessment_markup(teacher),
                         parse_mode='Markdown')
        bot.register_next_step_handler(message, submission_assessment_receive,
                                       submission_id)
    else:
        submission = Submission.get(submission_id)
        submission.assessment = message.text
        submission.status = SubmissionStatus.REVIEWED.value
        submission.save()

        ru_text = "Результат проверки отправлен ученику"
        en_text = "The review result has been sent to the student"
        text = ru_text if teacher.language_code == 'ru' else en_text

        bot.send_message(message.chat.id,
                         text,
                         reply_markup=remove_markup(),
                         parse_mode='Markdown')
        task = Task.get(submission.task_id)
        task_detail_view(teacher, task)
        new_submission_review_result_notification(submission)
Example #9
0
def greeting_and_habit_request(message):
    user = User.get(message.chat.id)
    ru_text = f'Привет{", " + user.first_name if user.first_name else ""}! ' \
              f'Я Инспектор Хэбит, борец с мировой ленью и прокрастинацией. ' \
              f'А ты, кажется, как раз испытваешь с этим определённые проблемы.\n\n' \
              f'Короче, назначаешь себе привычку и обещаешь следовать ей, ' \
              f'а я тебя буду проверять: держишь слово — красавчик, ' \
              f'нарушаешь — ловишь денежный штраф. Размер штрафа выбираешь сам. ' \
              f'И таким образом мы работаем 3 недели.\n\n' \
              f'Всё ясно? Если да, то выбирай привычку из списка или пиши свою, ' \
              f'если нет, то не трать моё время.\n\n' \
              f'И кстати, я филантроп: 80% денег, ' \
              f'сгенерированных на твоей лени, пойдут на благотворительность.'

    en_text = f'Hello{", " + user.first_name if user.first_name else ""}! ' \
              f'I am Inspector Habit, the fighter with world laziness and procrastination. ' \
              f'And you seem to have trouble with it.\n\n' \
              f'In short, you assign yourself a habit and promise to follow it, ' \
              f'and I will check you: keep your word - handsome, ' \
              f'you break - you catch a fine. You choose the amount of fines yourself. ' \
              f'And so we work 3 weeks.\n\n' \
              f'All clear? If yes, then choose a habit from the list or write your own, ' \
              f"if not, don't waste my time.\n\n" \
              f"And by the way, I'm a philanthropist: 80% of the money " \
              f"generated on your laziness will go to charity."

    text = ru_text if user.language_code == 'ru' else en_text

    bot.send_message(message.chat.id,
                     text,
                     reply_markup=markups.get_habits_markup(message.chat.id))
    bot.register_next_step_handler(message, habit_receive)
Example #10
0
def create_report(message):
    try:
        chat_id = message.chat.id

        genrep = types.InlineKeyboardButton(content.BUTTON_GENREPORT)
        homepage = types.InlineKeyboardButton(content.BUTTON_MAIN_MENU)

        # отчет по всем проектам bot tribunal
        # parsprofit = types.InlineKeyboardButton(content.BUTTON_PARSPROFIT)
        # markup.add(parsprofit)

        markup = types.ReplyKeyboardMarkup(True, True)

        markup.add(genrep)
        markup.add(homepage)

        bot.send_message(chat_id,
                         "Чтобы сгенерировать отчет нажмите кнопку",
                         reply_markup=markup)

        bot.register_next_step_handler(message, funcmenu.func_create_report)

        # отправить деньги сделать перевод (реквест)

    except Exception as e:
        bot.reply_to(
            message,
            'Error createreport menu. Contact the administrator and please DONT use bot.'
        )
Example #11
0
def habit_receive(message):
    user = User.get(message.chat.id)

    if message.text in ['Другое...', 'Other...']:
        ru_text = 'Напиши привычку, над которой будем работать'
        en_text = 'Write the habit we will work on'
        text = ru_text if user.language_code == 'ru' else en_text

        bot.send_message(message.chat.id,
                         text,
                         reply_markup=types.ReplyKeyboardRemove(),
                         parse_mode='Markdown')
        bot.register_next_step_handler(message, habit_receive)
    else:
        ru_text = f'Итак, ты  хочешь *{message.text}*'
        en_text = f'So you want *{message.text}*'
        text = ru_text if user.language_code == 'ru' else en_text

        preparing_habits[message.chat.id] = {
            'label': message.text,
            'days_of_week': []
        }

        bot.send_message(message.chat.id,
                         text,
                         reply_markup=markups.get_ready_markup(
                             message.chat.id),
                         parse_mode='Markdown')
        days_request(message)
Example #12
0
def time_receive(message):
    user = User.get(message.chat.id)
    ru_days = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс']
    en_days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
    days = ru_days if user.language_code == 'ru' else en_days

    time_array = message.text.split(' ')

    try:
        for time in time_array:
            timeformat = '%H:%M'
            datetime.strptime(time, timeformat)

        preparing_habits[message.chat.id]['time_array'] = time_array
        check_days = re.sub(
            r'\s+', ' ', ' '.join([
                day if day_of_week
                in preparing_habits[message.chat.id]['days_of_week'] else ''
                for day_of_week, day in enumerate(days)
            ]))

        ru_text = f'Хорошо, я буду проверять тебя в *{message.text}* по *{check_days}*.'
        en_text = f"Okay, I'll check you at *{message.text}* on *{check_days}*"
        text = ru_text if user.language_code == 'ru' else en_text

        bot.send_message(message.chat.id, text, parse_mode="Markdown")
        location_request(message)

    except ValueError:
        ru_text = 'Кажется, ты ввёл какую-то ерунду. Попробуй ещё раз, используя формат *ЧЧ:ММ*.'
        en_text = 'It seems you have entered some nonsense. Try again using *HH:MM* format.'
        text = ru_text if user.language_code == 'ru' else en_text

        bot.send_message(message.chat.id, text, parse_mode='Markdown')
        bot.register_next_step_handler(message, time_receive)
Example #13
0
def fio(msg):
    chat_id = msg.chat.id
    name = msg.text

    # проверка корректности ФИО
    a = 0
    name_split = name.split(" ")
    while a == 0:
        if bool(re.search('[а-яА-Я]', name)) and len(name_split) == 3:
            a == 1
        else:
            bot.send_message(
                chat_id,
                "Пожалуйста, используйте буквы только русского алфавита.")
            bot.send_message(
                chat_id, "Имя должно быть в формате <Фамилия Имя Отчество>")
            bot.register_next_step_handler(msg, fio)
            return
        a = 1
    #

    user = User(name=name,
                telegram_id=chat_id,
                telegram_nickname=msg.from_user.username)
    session.add(user)
    session.commit()

    bot.send_message(chat_id, "Отлично, теперь ты в системе!")
    return select_group(msg)
Example #14
0
def back(message):
    if message.text == "Назад":
        keyboard = telebot.types.ReplyKeyboardMarkup(True, True)
        keyboard.row('Настройки', 'Информация о вас')
        bot.send_message(message.chat.id,
                         "Выбери что дальше",
                         reply_markup=keyboard)
        bot.register_next_step_handler(message, settings2)
Example #15
0
def language_confirm_request(message):
    text = f'🇷🇺 Ты уверен, что хочешь выбрать *{message.text}*\n' \
           f'🇬🇧 Are you sure you want to choose *{message.text}*'
    bot.send_message(message.chat.id,
                     text,
                     reply_markup=markups.get_language_confirm_markup(),
                     parse_mode='Markdown')
    bot.register_next_step_handler(message, language_confirm_receive)
Example #16
0
def start_register(msg):
    chat_id = msg.chat.id
    bot.send_message(chat_id, "Привет! Зарегистрируся.")
    bot.send_message(
        chat_id,
        "Для того, чтобы учителя или ученики могли тебя опознать, введи, пожалуйста, ФИО"
    )
    bot.register_next_step_handler(msg, fio)
Example #17
0
def preparing_2(message):
    lang_num = language_define(message)
    ask_text = take_phrase_2('place_input', 'day_after_tomorrow', lang_num)
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    button_geo = types.KeyboardButton(text=take_phrase_1('geolocation', lang_num), request_location=True)
    keyboard.add(button_geo)
    sent = bot.reply_to(message, ask_text, reply_markup = keyboard)
    bot.register_next_step_handler(sent, weather_2)
Example #18
0
def adminSingleVopros(callback):
    adminVopros.adminVopros = callback.message.text

    bot.edit_message_reply_markup(callback.message.chat.id,
                                  callback.message.message_id)

    bot.send_message(callback.message.chat.id, 'Ваш ответ :')

    bot.register_next_step_handler(callback.message, adminAnswerSingleVopros)
Example #19
0
def remove(message):
    chat_id = message.chat.id
    markup = ReplyKeyboardMarkup(one_time_keyboard=True)

    for user in message.current_group.users:
        markup.add(KeyboardButton(user.telegram_nickname))

    bot.send_message(chat_id, "Выберите человека:", reply_markup=markup)
    bot.register_next_step_handler(message, remove_success)
Example #20
0
def user_select(message):
    chat_id = message.chat.id
    markup = ReplyKeyboardMarkup(one_time_keyboard=True)

    for user in message.current_group.users:
        markup.add(KeyboardButton(user.name))

    bot.send_message(chat_id, "Выберите человека:", reply_markup=markup)
    bot.register_next_step_handler(message, change_roles)
Example #21
0
def student_fullname_request(message):
    student = Student.get(message.chat.id)

    ru_text = "Введите свою фамилию и имя. Их будут видеть ваши учителя."
    en_text = "Send your full name. Your teachers will see it."
    text = ru_text if student.language_code == 'ru' else en_text

    bot.send_message(message.chat.id, text)
    bot.register_next_step_handler(message, student_fullname_receive)
Example #22
0
def teacher_fullname_request(message):
    teacher = Teacher.get(message.chat.id)

    ru_text = "Введите своё ФИО. Его будут видеть ваши ученики."
    en_text = "Send your full name. Your students will see it."
    text = ru_text if teacher.language_code == 'ru' else en_text

    bot.send_message(message.chat.id, text)
    bot.register_next_step_handler(message, teacher_fullname_receive)
Example #23
0
def check_password(message):
    if (message.text == '123'):
        bot.send_message(message.chat.id, 'You are welcome!')
        f = open(str(message.chat.id) + "_rights.txt", "w")
        f.write('true')
    elif (message.text == 'exit' or message.text == '/exit'):
        bot.send_message(message.chat.id, 'OK, go to main menu')
    else:
        bot.send_message(message.chat.id, 'Incorrect')
        bot.register_next_step_handler(message, want_password)
Example #24
0
def preparing_0(message, data=None):
    if data: lang_num = 0 if 'Get' in data else 1
    else: lang_num = language_define(message)
        
    ask_text = take_phrase_2('place_input', 'today', lang_num)
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    button_geo = types.KeyboardButton(text=take_phrase_1('geolocation', lang_num), request_location=True)        
    keyboard.add(button_geo)
    sent = bot.reply_to(message, ask_text, reply_markup = keyboard)
    bot.register_next_step_handler(sent, weather_0)
Example #25
0
def language_response(message):
    user = User.get(message.chat.id)

    if message.text in ('🇷🇺Русский', '🇬🇧English'):
        # set user language
        user.language_code = 'ru' if message.text == '🇷🇺Русский' else 'en'
        user.save()
        language_confirm_request(message)
    else:
        bot.register_next_step_handler(message, language_response)
Example #26
0
def push_homework(message):
    chat_id = message.chat.id
    markup = ReplyKeyboardMarkup(one_time_keyboard=True)

    for hw in message.current_group.homeworks:
        markup.add(KeyboardButton(hw.id))

    bot.send_message(chat_id, "Выберите ДЗ:", reply_markup=markup)

    bot.register_next_step_handler(message, push_next)
Example #27
0
def get_name(message):
    cid = message.chat.id
    name = "{} {}".format(message.from_user.first_name,
                          message.from_user.last_name)
    if re.match(config.name_re, name):
        shelf[str(cid)]['name'] = dbaccess.id_str(name)
        get_seller_type(cid)
    else:
        msg = bot.send_message(cid, "Введите ФИО:")
        bot.register_next_step_handler(msg, get_name2)
def are_you_sure_request(message, teacher, classroom):
    ru_text = f"Вы уверены, что хотите удалить *{classroom.name}*?"
    en_text = f"Are you sure you want to delete *{classroom.name}*"
    text = ru_text if teacher.language_code == 'ru' else en_text

    bot.send_message(message.chat.id,
                     text,
                     reply_markup=are_you_sure_markup(teacher),
                     parse_mode='Markdown')
    bot.register_next_step_handler(message, are_you_sure_receive, teacher,
                                   classroom)
Example #29
0
def changename(message):
    global name
    if len(message.text) > 2 and len(message.text) < 20:
        name = message.text
        keyboard2 = telebot.types.ReplyKeyboardMarkup(True, True)
        keyboard2.row('Назад')
        bot.send_message(message.chat.id, "Запомнил", reply_markup=keyboard2)
    else:
        bot.send_message(message.from_user.id, 'От двух до 20')
        bot.register_next_step_handler(message, changename)
    bot.register_next_step_handler(message, back)
Example #30
0
def get_name2(message):
    if message.text == '/end':
        return
    cid = message.chat.id
    name = ' '.join(message.text.split())
    if re.match(config.name_re, name):
        shelf[str(cid)]['name'] = dbaccess.id_str(name)
        get_seller_type(cid)
    else:
        msg = bot.send_message(cid, "Некорректный ввод. Введите ФИО:")
        bot.register_next_step_handler(msg, get_name2)