Esempio n. 1
0
def process_greetings_step(message):
    try:
        user = User(message.from_user)

        if message.text == 'Ye, sure!':
            user.preferred_name = user.first_name
            user.save()
            msg = bot.send_message(message.chat.id,
                                   f'How old are you, {user.preferred_name}?',
                                   reply_markup=types.ReplyKeyboardRemove())
            bot.register_next_step_handler(msg, process_age_step)
        elif message.text == 'No, with surname please':
            msg = bot.send_message(message.chat.id,
                                   f'How old are you, {user.preferred_name}?',
                                   reply_markup=types.ReplyKeyboardRemove())
            bot.register_next_step_handler(msg, process_age_step)
        elif message.text == 'No, I\'ll tell you how':
            msg = bot.reply_to(message,
                               'Ok, I\'m listening...',
                               reply_markup=types.ReplyKeyboardRemove())
            bot.register_next_step_handler(msg, process_greetings_step_other)
        else:
            raise Exception()

    except Exception as e:
        print(e)
        bot.send_sticker(message.chat.id, 'CAADAgADKAMAAoZALgI8Cc13uyaJLhYE')
        bot.reply_to(message, 'oooops')
Esempio n. 2
0
def show_info(message):
    user = User(message.from_user)
    if user.existed:
        bot.send_message(message.chat.id, repr(user))
    else:
        bot.send_message(message.chat.id,
                         'No information about you, try /start')
Esempio n. 3
0
def process_photo(message):
    user = User(message.from_user)
    # json.dump(str(message), open('tmp.json', 'w'))
    if message.content_type != 'photo':
        msg = bot.send_message(
            message.chat.id,
            f'Не, мне нужна фотография',
        )
        bot.register_next_step_handler(msg, process_photo)
        return
    file_info = bot.get_file(message.photo[-1].file_id)
    print(file_info)
    downloaded_file = bot.download_file(file_info.file_path)
    tmp = file_info.file_path.split('/')
    file_path = tmp[0] + '/' + user.id + '_' + tmp[1]
    with open(file_path, 'wb') as out:
        out.write(downloaded_file)

    user.photos.append(file_path)
    user.save()
    bot.send_message(
        message.chat.id,
        f'{user.preferred_name}, спасибо, фотка сохранена под именем: {file_path}'
    )
    bot.send_message(
        message.chat.id,
        f'\nНа этом пока всё! Можно начать заново \n/start\n или показать информацию о себе \n/self\n можно также удалить всю информацию о себе \n/purge'
    )
Esempio n. 4
0
def purge(message):
    user = User(message.from_user)
    if user.existed:
        user.purge()
        bot.send_message(message.chat.id, 'You were deleted')
    else:
        bot.send_message(message.chat.id, 'Nothing to delete')
Esempio n. 5
0
def process_sex_step(message):
    try:
        sex = message.text
        user = User(message.from_user)
        if (sex == u'Male') or (sex == u'Female'):
            user.sex = sex
            user.save()
        else:
            raise Exception()
        bot.send_message(
            message.chat.id, 'Nice to meet you, ' + user.preferred_name +
            '\n Age:' + str(user.age) + '\n Sex:' + user.sex)
        bot.send_sticker(message.chat.id, 'CAADAgADJgMAAoZALgIZC2GLq2N1rhYE')

        bot.send_message(
            message.chat.id,
            f'\nOk, {user.preferred_name}, Let\'s start a small survey now!\n')

        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
        button_geo = types.KeyboardButton(text='Отправить местоположение',
                                          request_location=True)
        markup.add(button_geo)
        msg = bot.send_message(
            message.chat.id,
            f'{user.preferred_name}, где ты находишься? (Нажми на кнопку, чтобы отправить геолокацию)',
            reply_markup=markup)
        bot.register_next_step_handler(msg, process_location)
    except Exception as e:
        print(e)
        bot.send_sticker(message.chat.id, 'CAADAgADKAMAAoZALgI8Cc13uyaJLhYE')
        bot.reply_to(message, 'oooops')
Esempio n. 6
0
def process_location(message):
    user = User(message.from_user)
    user.latitude = message.location.latitude
    user.longitude = message.location.longitude
    user.save()
    dist = round(get_distance(user.latitude, user.longitude), 1)
    bot.send_message(message.chat.id, f'Ого, ты в {dist}км от центра Москвы!')

    bot.send_message(message.chat.id, '\nТеперь к делу...')
    msg = bot.send_message(
        message.chat.id,
        f'{user.preferred_name}, в каком отделов магазина размещена безглютеновая продукция?',
        reply_markup=types.ReplyKeyboardRemove())
    bot.register_next_step_handler(msg, process_q1)
Esempio n. 7
0
def process_greetings_step_other(message):
    try:
        user = User(message.from_user)
        user.preferred_name = message.text
        user.save()
        bot.send_message(
            message.chat.id,
            f'Great! From now on you are {user.preferred_name} to me')
        msg = bot.reply_to(message, f'How old are you, {user.preferred_name}?')
        bot.register_next_step_handler(msg, process_age_step)
    except Exception as e:
        print(e)
        bot.send_sticker(message.chat.id, 'CAADAgADKAMAAoZALgI8Cc13uyaJLhYE')
        bot.reply_to(message, 'oooops')
Esempio n. 8
0
def callback_query(call):
	print(call)
	with open('tmp.json', 'w') as out:
		out.write(str(call))
	if call.data == "cb_yes":
		bot.answer_callback_query(call.id, "Answer is Yes")
	elif call.data == "cb_no":
		bot.answer_callback_query(call.id, "Answer is No")
	try:
		key_lst = list(tmp_d.keys())
		this_q_index = key_lst.index(call.message.text)
		next_q_name = key_lst[this_q_index + 1]
		tmp_d[next_q_name](call.message)
	except (ValueError, IndexError):
		bot.send_message(call.message.chat.id, 'That is all over')
Esempio n. 9
0
def process_q3(message):
    user = User(message.from_user)
    user.q3 = message.text
    user.save()
    msg = bot.send_message(
        message.chat.id,
        f'\n{user.preferred_name}, ты молодец!\nА теперь отправь мне красивую фотографию',
        reply_markup=types.ReplyKeyboardRemove())
    bot.register_next_step_handler(msg, process_photo)
Esempio n. 10
0
def process_q2(message):
    user = User(message.from_user)
    if message.text == u'Да' or message.text == u'Нет':
        user.q2 = message.text
        user.save()
    else:
        bot.send_message(message.chat.id, 'Error - if u see this, text AD')
        return

    markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
    markup.add('Верхние полки')
    markup.add('По середине - на уровне глаз')
    markup.add('Нижние полки')
    msg = bot.send_message(
        message.chat.id,
        'Супер! И еще: На каком уровне размещены безглютеновые продукты?',
        reply_markup=markup)
    bot.register_next_step_handler(msg, process_q3)
Esempio n. 11
0
def process_q1(message):
    user = User(message.from_user)
    user.q1 = message.text
    user.save()

    markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
    markup.add('Да', 'Нет')
    msg = bot.send_message(
        message.chat.id,
        f'Круто, мой любимый отдел, кстати! ;)\nА выделяется ли стеллаж с безглютеновой продукцией от остальных стеллажей?',
        reply_markup=markup)
    bot.register_next_step_handler(msg, process_q2)
Esempio n. 12
0
def send_welcome(message):
    user = User(message.from_user)
    user.save()

    markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
    markup.one_time_keyboard = True
    # types.ReplyKeyboardRemove
    markup.add('Ye, sure!')
    markup.add('No, with surname please')
    markup.add('No, I\'ll tell you how')

    msg = bot.send_message(message.chat.id,
                           f"""\
Greetings {user.preferred_name}, I am polly, an example bot.
May I call you {user.first_name}?
""",
                           reply_markup=markup)
    # bot.register_next_step_handler(msg, process_name_step)

    bot.register_next_step_handler(msg, process_greetings_step)
Esempio n. 13
0
def process_age_step(message):
    try:
        age = message.text
        if not age.isdigit():
            msg = bot.reply_to(message,
                               'Age should be a number. How old are you?')
            bot.register_next_step_handler(msg, process_age_step)
            return

        user = User(message.from_user)
        user.age = age
        user.save()

        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
        markup.add('Male', 'Female')
        msg = bot.send_message(message.chat.id,
                               'What is your gender',
                               reply_markup=markup)
        bot.register_next_step_handler(msg, process_sex_step)
    except Exception as e:
        print(e)
        bot.send_sticker(message.chat.id, 'CAADAgADKAMAAoZALgI8Cc13uyaJLhYE')
        bot.reply_to(message, 'oooops')
Esempio n. 14
0
def handle_q2(message, clear_markup=True):
	print(message)
	with open('tmp.json', 'w') as out:
		out.write(str(message))
	# json.dump(str(message).replace("'", '"'), )
	bot.send_message(message.chat.id, 'q2', reply_markup=markup_yes_no)
Esempio n. 15
0
def handle_q1(message):
	bot.send_message(message.chat.id, 'q1', reply_markup=markup_yes_no,)