コード例 #1
0
def adverts(message):
	if message.text[7] == '1':
		profile_id = message.text[8:]
		profile = db.get_profile_by_id(profile_id)
		cap = profile_info(profile)
		photo_id = db.get_profile_photo(profile[0])
		keyboard = types.InlineKeyboardMarkup()
		button = types.InlineKeyboardButton('Изменить объявление', callback_data = 'change_profile')
		keyboard.add(button)
		button = types.InlineKeyboardButton('Удалить объявление', callback_data = 'delete_profile')
		keyboard.add(button)
		if photo_id == '0':
			bot.send_message(message.chat.id, cap, reply_markup = keyboard, parse_mode = 'Markdown')
		else: 
			photo = photos.download_photo(photo_id)
			bot.send_photo(message.chat.id, photo, caption = cap, reply_markup=keyboard, parse_mode = 'Markdown')
	elif message.text[7] == '2':
		flat_id = message.text[8:]
		flat = db.get_flat_by_id(flat_id)
		keyboard = types.InlineKeyboardMarkup()
		cap = '*Расположение квартиры:* '+ flat[1] + ' район, ' + flat[2] + '\n' + \
		 '*Цена аренды:* '+ str(flat[3]) + '\n' + '*Количество комнат:* ' + str(flat[4]) + '\n' + \
		 '*Количество спальных мест:* ' + str(flat[5]) + '\n' + '*Стоимость аренды на одного человека:*' + str(flat[6]) + \
		 '\n' + '*Описание:* '+ flat[7] + '\n' + '*Номер телефона:* ' + flat[8]
		photo_id = db.get_flat_photo_file_id(flat[0])
		if photo_id == '0':
			bot.send_message(message.chat.id, cap, parse_mode = 'Markdown')
		else: 
			photo = photos.download_photo(photo_id)
			bot.send_photo(message.chat.id, photo, caption = cap, parse_mode = 'Markdown')
コード例 #2
0
def upload_photo(message):
	global allvars
	add_new_user(message.chat.id)
	u = allvars[message.chat.id]
	if (u.seeker_st == True or u.seeker_search_st == True) and u.mode == 18:
		u.seeker.photo_id.append(photos.document_handler(message, bot))
		if message.from_user.username is not None:
			u.seeker.telegram_username = message.from_user.username
		db.seeker_insert(u.seeker)
		bot.send_message(message.chat.id, 'Ваша анкета сформирована!')
		bot.send_chat_action(message.chat.id, 'typing')
		time.sleep(2)
		profile = db.get_profile(message.chat.id)
		cap = profile_info(profile)
		photo_id = db.get_profile_photo(profile[0])
		if photo_id == '0':
			bot.send_message(message.chat.id, cap, parse_mode = 'Markdown')
		else: 
			photo = photos.download_photo(photo_id)
			bot.send_photo(message.chat.id, photo, caption = cap, parse_mode = 'Markdown')
		bot.send_chat_action(message.chat.id, 'typing')
		time.sleep(2)
		bot.send_message(message.chat.id, 'Если Вы желаете изменить анкету, Вы можете сделать это в разделе \'Мои объявления\' в главном меню /menu')
		time.sleep(2)
		if u.seeker_st == True:
			bot.send_message(message.chat.id, '*Мы подбираем для Вас квартиры с идеальными соседями...*', parse_mode = "Markdown")
			bot.send_chat_action(message.chat.id, 'typing')
			time.sleep(5)
			seeker_st = False
			flat_matches = db.get_matches(seeker)
			seeker = Seeker()
			keyboard = types.InlineKeyboardMarkup();
			button = types.InlineKeyboardButton('Показать', callback_data = 'matches_out')
			keyboard.add(button)
			bot.send_message(message.chat.id, 'Квартиры найдены!', reply_markup = keyboard)
		elif u.seeker_search_st == True:
			bot.send_message(message.chat.id, '*Мы подбираем для Вас идеальных соседов по квартире...*', parse_mode = 'Markdown')
			bot.send_chat_action(message.chat.id, 'typing')
			time.sleep(5)
			u.seeker_search_st = False
			u.profiles = db.get_profiles_by_filters(u.seeker)
			u.seeker = Seeker()
			keyboard = types.InlineKeyboardMarkup();
			button = types.InlineKeyboardButton('Показать', callback_data = 'profile_next')
			keyboard.add(button)
			bot.send_message(message.chat.id, 'Люди найдены!', reply_markup = keyboard)
コード例 #3
0
def upload_photo(message):
    global allvars
    add_new_user(message.chat.id)
    u = allvars[message.chat.id]
    if (u.seeker_st == True or u.seeker_search_st == True) and u.mode == 17:
        u.seeker.photo_id.append(photos.document_handler(message, bot))
        if message.from_user.username is not None:
            u.seeker.telegram_username = message.from_user.username
        db.seeker_insert(u.seeker)
        bot.send_message(
            message.chat.id,
            'Ура! Мы с тобой это сделали. Твоя анкета успешно сформирована! Если я тебе понравился, расскажи про меня своим друзьям. Я очень люблю общаться!'
        )
        bot.send_chat_action(message.chat.id, 'typing')
        time.sleep(2)
        profile = db.get_profile(message.chat.id)
        cap = profile_info(profile)
        photo_id = db.get_profile_photo(profile[0])
        if photo_id == '0':
            bot.send_message(message.chat.id, cap, parse_mode='Markdown')
        else:
            photo = photos.download_photo(photo_id)
            bot.send_photo(message.chat.id,
                           photo,
                           caption=cap,
                           parse_mode='Markdown')
        bot.send_chat_action(message.chat.id, 'typing')
        time.sleep(2)
        bot.send_message(
            message.chat.id,
            'Если ты желаешь изменить анкету, можешь сделать это в разделе \'Мои объявления\' в главном меню /menu'
        )
        time.sleep(2)
        if u.seeker_st == True:
            bot.send_message(
                message.chat.id,
                '*Подбираю тебе жилье с идеальным для тебя соседями...*',
                parse_mode="Markdown")
            bot.send_chat_action(message.chat.id, 'typing')
            time.sleep(5)
            seeker_st = False
            flat_matches = db.get_matches(seeker)
            seeker = Seeker()
            keyboard = types.InlineKeyboardMarkup()
            button = types.InlineKeyboardButton('Показать',
                                                callback_data='matches_out')
            keyboard.add(button)
            bot.send_message(message.chat.id,
                             'Квартиры найдены!',
                             reply_markup=keyboard)
        elif u.seeker_search_st == True:
            bot.send_message(
                message.chat.id,
                '*Подбираю для тебя идеальных соседов по квартире...*',
                parse_mode='Markdown')
            bot.send_chat_action(message.chat.id, 'typing')
            time.sleep(5)
            u.seeker_search_st = False
            u.profiles = db.get_profiles_by_filters(u.seeker)
            u.seeker = Seeker()
            keyboard = types.InlineKeyboardMarkup()
            button = types.InlineKeyboardButton('Показать',
                                                callback_data='profile_next')
            keyboard.add(button)
            bot.send_message(message.chat.id,
                             'Люди найдены!',
                             reply_markup=keyboard)
コード例 #4
0
def name_insert_data(message):
    global allvars
    add_new_user(message.chat.id)
    u = allvars[message.chat.id]
    if message.text == 'Добавить новое объявление':
        chat_id = str(message.chat.id)
        if db.seeker_check_chat_id(chat_id) == True:
            keyboard = types.InlineKeyboardMarkup()
            button = types.InlineKeyboardButton(
                'Просмотреть профили людей', callback_data='rematch_profiles')
            keyboard.add(button)
            bot.send_message(
                message.chat.id, 'У вас уже есть активное объявление. '
                'Чтобы изменить или удалить объявление можешь перейти в раздел *\'Мои объявления\'*'
                ' в главном меню (/menu).',
                reply_markup=keyboard,
                parse_mode='Markdown')
            return
        keyboard = types.ReplyKeyboardMarkup(True, False)
        keyboard.row('🔙Назад в меню')
        bot.send_message(message.chat.id,
                         'Итак, давай заполним тебе анкету',
                         reply_markup=keyboard)
        time.sleep(1)
        bot.send_message(message.chat.id, 'Введи свое имя.')
        u.seeker_search_st = True
        u.mode = 1
    elif message.text == '🔙Назад в меню':
        default_vars(message.chat.id)
        keyboard = types.ReplyKeyboardMarkup(True, True)
        keyboard.row('Добавить новое объявление', 'Просмотреть объявления')
        keyboard.row('Мои объявления', 'Обратная связь')
        bot.send_message(message.chat.id,
                         'Главное меню',
                         reply_markup=keyboard)
    elif message.text == 'Просмотреть объявления':
        u.search_profile = True
        u.mode = 1
        u.seeker = Seeker()
        bot.send_message(
            message.chat.id,
            'Для более удобного показа профилей указажи район города и желаемую стоимость аренды'
        )
        time.sleep(1)
        keyboard = types.ReplyKeyboardMarkup(True, True)
        keyboard.row('Алматинский', 'Байконурский')
        keyboard.row('Есильский', 'Сарыаркинский')
        keyboard.row('🔙Назад в меню')
        bot.send_message(message.chat.id,
                         'Для начала укажи желаемый район',
                         reply_markup=keyboard)
    elif message.text == 'Мои объявления':
        profile = db.get_profile(message.chat.id)
        if profile is None:
            bot.send_message(message.chat.id,
                             'У тебя нет активных объявлений.')
            return
        text = '*Твои объявления*\n\n'
        if profile is not None:
            text += '*Поиск квартиры*\n'
            text += '📄Подробнее: /advert1' + str(profile[0]) + '\n\n'
        bot.send_message(message.chat.id, text, parse_mode='Markdown')
    elif message.text == 'Обратная связь' or u.feedback_st == True:
        if u.feedback_st == False:
            u.feedback_st = True
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Оставь свой отзыв или предложение, отправив мне сообщение!',
                reply_markup=keyboard)
        else:
            bot.send_message(
                365391038,
                str(message.text) + '\nот ' +
                str(message.from_user.last_name) + ' ' +
                str(message.from_user.first_name) + ' @' +
                str(message.from_user.username))
            default_vars()
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('Добавить новое объявление', 'Просмотреть объявления')
            keyboard.row('Мои объявления', 'Обратная связь')
            bot.send_message(message.chat.id,
                             'Спасибо за оставленный отзыв!',
                             reply_markup=keyboard)
    elif u.seeker_st == True or u.seeker_search_st == True:
        if u.mode == 1:
            u.seeker.chat_id = message.chat.id
            u.seeker.name = message.text
            u.mode = 2
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Как бы грубо не звучало, но скажи мне свой возраст :)',
                reply_markup=keyboard)
        elif u.mode == 2:
            age = message.text
            if not age.isdigit() or int(age) > 110 or int(age) < 14:
                bot.send_message(message.chat.id,
                                 'Неправильный ввод! Введи целое число.')
                return
            u.seeker.age = int(age)
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(message.chat.id,
                             'Откуда ты?\n(регион, город)',
                             reply_markup=keyboard)
        elif u.mode == 3:
            u.seeker.homeland = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('Мужчина', 'Женщина')
            keyboard.row('🔙Назад в меню')
            bot.send_message(message.chat.id,
                             'Укажи свой пол',
                             reply_markup=keyboard)
        elif u.mode == 4:
            if message.text == 'Мужчина':
                u.seeker.gender = 'Мужчина'
            elif message.text == 'Женщина':
                u.seeker.gender = 'Женщина'
            else:
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Мужчина', 'Женщина')
                keyboard.row('🔙Назад в меню')
                bot.send_message(
                    message.chat.id,
                    'Неправильный ввод! Прошу тебя воспользоваться клавиатурой',
                    reply_markup=keyboard)
                return
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('учусь', 'работаю', 'не учусь и не работаю')
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Теперь мне нужно знать чем ты занимаешься. Выбери одно из двух:',
                reply_markup=keyboard)
        elif u.mode == 5:
            keyboard = types.ReplyKeyboardMarkup(True, True)
            if message.text == 'учусь':
                u.seeker.worker_or_student = 'student'
                keyboard.row('🔙Назад в меню')
                keyboard.row('Astana IT University', 'КазГЮА')
                keyboard.row('Аграрный университет', 'Назарбаев Университет')
                keyboard.row('Евразийский НУ',
                             'Международный Университет Астаны')
                keyboard.row('Медицинкий универ Астаны', 'Коледж')
                keyboard.row('Другое...')
                bot.send_message(message.chat.id,
                                 'Где ты учишься?',
                                 reply_markup=keyboard)
            elif message.text == 'работаю':
                u.seeker.worker_or_student = 'worker'
                keyboard.row('🔙Назад в меню')
                keyboard.row('Строительство', 'Торговля')
                keyboard.row('IT', 'Образование')
                keyboard.row('Госслужба', 'Работаю на себя')
                keyboard.row('Частная комания', 'Рестораны/кафе')
                keyboard.row('Другое...')
                bot.send_message(message.chat.id,
                                 'Какая у Вас сфера деятельности?',
                                 reply_markup=keyboard)
            elif message.text == 'не учусь и не работаю':
                u.seeker.worker_or_student = 'neither'
                u.mode += 2
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Казахский', 'Русский', 'Оба языка')
                keyboard.row('Назад в меню')
                bot.send_message(message.chat.id,
                                 'На каких языках ты говоришь',
                                 reply_markup=keyboard)
            else:
                bot.send_message(message.chat.id, 'Неправильный ввод!')
                return
            u.mode += 1
        elif u.mode == 6:
            status = u.seeker.worker_or_student
            if message.text == 'Другое...':
                if status == 'student':
                    bot.send_message(message.chat.id,
                                     'Напиши название своего места обучения')
                elif status == 'worker':
                    bot.send_message(
                        message.chat.id,
                        'Напиши сферу деятельности, в которой ты работаешь')
            else:
                u.seeker.study_or_work_place = message.text
                u.mode += 1
                keyboard = types.ReplyKeyboardMarkup(True, True)
                if status == 'student':
                    keyboard.row('Жаворонок', 'Сова')
                    keyboard.row('🔙Назад в меню')
                    bot.send_message(
                        message.chat.id,
                        'Какой у тебя режим? Жаворонок - если ты ложишься рано и встаешь рано. Сова - человек ночи. Любит ложится поздно или вовсе привык работать ночью.',
                        reply_markup=keyboard)
                elif status == 'worker':
                    keyboard.row('С утра до вечера', 'С утра до обеда')
                    keyboard.row('Ночью', 'Вахтовые смены')
                    keyboard.row('Через день', '🔙Назад в меню')
                    bot.send_message(message.chat.id,
                                     'В какое время ты работаешь?',
                                     reply_markup=keyboard)
        elif u.mode == 7:
            u.seeker.sleeping_mode = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('Казахский', 'Русский', 'Оба языка')
            keyboard.row('🔙Назад в меню')
            bot.send_message(message.chat.id,
                             'Укажи языки, на которых ты говоришь:',
                             reply_markup=keyboard)
        elif u.mode == 8:
            lang = message.text
            if lang == 'Казахский' or lang == 'Русский' or lang == 'Оба языка':
                u.seeker.langs = message.text
                u.mode += 1
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Курю/Не пью', 'Не курю/Пью')
                keyboard.row('Не курю/Не пью', 'Курю/Пью')
                keyboard.row('🔙Назад в меню')
                bot.send_message(
                    message.chat.id,
                    'Укажи свои вредные привычки .Я если что люблю людей ведущих ЗОЖ :)',
                    reply_markup=keyboard)
            else:
                bot.send_message(message.chat.id, 'Неправильный ввод!')
                return
        elif u.mode == 9:
            u.seeker.bad_habits = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('Людей', 'Жилье')
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Ты ищещь людей на подселение или ищешь жилье для совместной аренды?',
                reply_markup=keyboard)
        elif u.mode == 10:
            if message.text == 'Людей':
                u.seeker.hata = True
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Алматинский', 'Байконурский')
                keyboard.row('Есильский', 'Сарыаркинский')
                keyboard.row('🔙Назад в меню')
                bot.send_message(message.chat.id,
                                 'В каком районе находится твоя квартира/дом?',
                                 reply_markup=keyboard)
            elif message.text == 'Жилье':
                u.seeker.hata = False
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Алматинский', 'Байконурский')
                keyboard.row('Есильский', 'Сарыаркинский')
                keyboard.row('🔙Назад в меню')
                bot.send_message(message.chat.id,
                                 'Желаемый район города',
                                 reply_markup=keyboard)
            else:
                bot.send_message(message.chat.id,
                                 'Неправильный ввод.\n(Да/Нет)')
                return
            u.mode += 1
        elif u.mode == 11:
            distr = message.text
            if distr == 'Алматинский' or distr == 'Байконурский' or distr == 'Есильский' or distr == 'Сарыаркинский':
                u.seeker.distr = message.text
                u.mode += 1
                if u.seeker.hata == True:
                    u.mode += 2
                    keyboard = types.ReplyKeyboardMarkup(True, True)
                    keyboard.row('до 20.000 тенге',
                                 'от 20.000 до 30.000 тенге')
                    keyboard.row('от 30.000 до 40.000 тенге',
                                 'от 40.000 до 50.000 тенге')
                    keyboard.row('выше 50.000 тенге', '🔙Назад в меню')
                    bot.send_message(
                        message.chat.id,
                        'Укажи стоимость аренды жилья с одного человека',
                        reply_markup=keyboard)
                else:
                    bot.send_message(
                        message.chat.id,
                        'Уточни возле чего тебе удобно жить(название \
					микрорайона, магазин, бизнес-центр, пересечение улиц, достопримечательность)'
                    )
            else:
                bot.send_message(message.chat.id, 'Неправильный ввод!')
        elif u.mode == 12:
            u.seeker.near_what = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('до 20.000 тенге', 'от 20.000 до 30.000 тенге')
            keyboard.row('от 30.000 до 40.000 тенге',
                         'от 40.000 до 50.000 тенге')
            keyboard.row('выше 50.000 тенге', '🔙Назад в меню')
            bot.send_message(message.chat.id,
                             'Желательная цена',
                             reply_markup=keyboard)
        elif u.mode == 13:
            u.seeker.price = message.text
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('Отдельную комнату', 'Можно с кем-нибудь в комнате')
            keyboard.row('Оба варианта')
            keyboard.row('🔙Назад в меню')
            bot.send_message(message.chat.id,
                             'Я ищу...',
                             reply_markup=keyboard)
            u.mode += 1
        elif u.mode == 14:
            if u.seeker.hata == True:
                u.seeker.price = message.text
            else:
                u.seeker.seeking_for = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Расскажи о себе. Можешь сказать свои интересы, хобби, что любишь читать, какие фильмы смотреть. Хочу узнать о тебе побольше.',
                reply_markup=keyboard)
        elif u.mode == 15:
            u.seeker.interest = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Введите свой номер телефона\n(пример: 8-ххх-ххх-хх-хх)',
                reply_markup=keyboard)
        elif u.mode == 16:
            num = message.text
            digits = 0
            correct = True
            for a in num:
                if a.isdigit():
                    digits += 1
                elif a != '-':
                    correct = False
            if digits != 11:
                correct = False
            if not correct:
                bot.send_message(message.chat.id, 'Неправильный ввод!')
                return
            u.seeker.phone_num = message.text
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Отправь своё селфи. Но только не стесняйся. Я всех люблю',
                reply_markup=keyboard)
            u.mode += 1
        elif u.mode == 17:
            bot.send_message(message.chat.id, 'Загрузите фотографию')
    elif u.search_profile == True:
        if u.mode == 1:
            distr = message.text
            if distr == 'Алматинский' or distr == 'Байконурский' or distr == 'Есильский' or distr == 'Сарыаркинский':
                u.seeker.distr = message.text
                u.mode += 1
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('до 20.000 тенге', 'от 20.000 до 30.000 тенге')
                keyboard.row('от 30.000 до 40.000 тенге',
                             'от 40.000 до 50.000 тенге')
                keyboard.row('выше 50.000 тенге', '🔙Назад в меню')
                bot.send_message(message.chat.id,
                                 'Теперь укажи желаемую стоимость аренды.',
                                 reply_markup=keyboard)
            else:
                bot.send_message(message.chat.id, 'Неправильный ввод!')
        elif u.mode == 2:
            u.seeker.price = message.text
            u.seeker.chat_id = message.chat.id
            u.seeker.hata = None
            u.profiles = db.get_profiles_by_filters(u.seeker)
            u.seeker = Seeker()
            u.search_profile = False
            u.mode = 0
            if u.profiles is None or u.cur_profile >= len(
                    u.profiles) or u.cur_profile < 0:
                bot.send_message(message.chat.id, 'Ошибка. Попробуй еще раз.')
                return
            profile = u.profiles[u.cur_profile]
            u.cur_profile += 1
            keyboard = types.InlineKeyboardMarkup()
            if u.cur_profile + 1 <= len(u.profiles) and u.cur_profile > 1:
                button1 = types.InlineKeyboardButton(
                    'Следующий >>', callback_data='profile_next')
                button2 = types.InlineKeyboardButton(
                    '<< Предыдущий', callback_data='profile_prev')
                keyboard.row(button2, button1)
            elif u.cur_profile > 1:
                button = types.InlineKeyboardButton(
                    '<< Предыдущий профиль', callback_data='profile_prev')
                keyboard.add(button)
            elif u.cur_profile + 1 <= len(u.profiles):
                button = types.InlineKeyboardButton(
                    'Следующий профиль >>', callback_data='profile_next')
                keyboard.add(button)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.send_message(message.chat.id,
                                 cap,
                                 reply_markup=keyboard,
                                 parse_mode='Markdown')
            else:
                photo = photos.download_photo(photo_id)
                bot.send_photo(message.chat.id,
                               photo,
                               caption=cap,
                               reply_markup=keyboard,
                               parse_mode='Markdown')
    elif u.change_st > 0:
        if change_st == 1:
            name = message.text
            db.change_name(message.chat.id, name)
            bot.send_message(message.chat.id, 'Твое Имя успешно изменено!')
            profile = db.get_profile(message.chat.id)
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\nОткуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.edit_message_text(chat_id=message.chat.id,
                                      message_id=last_mess_id,
                                      text=cap,
                                      reply_markup=keyboard,
                                      parse_mode='Markdown')
            else:
                bot.edit_message_caption(chat_id=message.chat.id,
                                         message_id=last_mess_id,
                                         caption=cap,
                                         reply_markup=keyboard,
                                         parse_mode='Markdown')
            change_st = 0
        elif change_st == 2:
            age = message.text
            if not age.isdigit():
                bot.send_message(message.chat.id, 'Введи целое число!')
                return
            db.change_age(message.chat.id, age)
            bot.send_message(message.chat.id, 'Твой возраст успешно изменен!')
            profile = db.get_profile(message.chat.id)
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\nОткуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.edit_message_text(chat_id=message.chat.id,
                                      message_id=last_mess_id,
                                      text=cap,
                                      reply_markup=keyboard,
                                      parse_mode='Markdown')
            else:
                bot.edit_message_caption(chat_id=message.chat.id,
                                         message_id=last_mess_id,
                                         caption=cap,
                                         reply_markup=keyboard,
                                         parse_mode='Markdown')
            change_st = 0
        elif change_st == 3:
            homeland = message.text
            db.change_homeland(message.chat.id, homeland)
            bot.send_message(message.chat.id,
                             'Твое место откуда Ты родом успешно изменено!')
            profile = db.get_profile(message.chat.id)
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\nОткуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.edit_message_text(chat_id=message.chat.id,
                                      message_id=last_mess_id,
                                      text=cap,
                                      reply_markup=keyboard,
                                      parse_mode='Markdown')
            else:
                bot.edit_message_caption(chat_id=message.chat.id,
                                         message_id=last_mess_id,
                                         caption=cap,
                                         reply_markup=keyboard,
                                         parse_mode='Markdown')
            change_st = 0
        elif change_st == 4:
            desc = message.text
            db.change_desc(message.chat.id, desc)
            bot.send_message(message.chat.id,
                             'Твое описание о себе успешно изменено!')
            profile = db.get_profile(message.chat.id)
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\nОткуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.edit_message_text(chat_id=message.chat.id,
                                      message_id=last_mess_id,
                                      text=cap,
                                      reply_markup=keyboard,
                                      parse_mode='Markdown')
            else:
                bot.edit_message_caption(chat_id=message.chat.id,
                                         message_id=last_mess_id,
                                         caption=cap,
                                         reply_markup=keyboard,
                                         parse_mode='Markdown')
            change_st = 0
    else:
        bot.send_message(message.chat.id,
                         'Чтобы выйти в главное меню выполни команду /menu')
コード例 #5
0
def callback(call):
    global allvars
    add_new_user(call.message.chat.id)
    u = allvars[call.message.chat.id]
    if call.message:
        if call.data == 'profile_next' or call.data == 'profile_prev' or call.data == 'rematch_profiles':
            bot.delete_message(call.message.chat.id, call.message.message_id)
            if call.data == 'rematch_profiles':
                profile = db.get_profile(call.message.chat.id)
                seeker = Seeker(profile)
                u.profiles = db.get_profiles_by_filters(seeker)
            if call.data == 'profile_prev':
                u.cur_profile -= 2
            if u.profiles is None or u.cur_profile >= len(
                    u.profiles) or u.cur_profile < 0:
                bot.send_message(call.message.chat.id,
                                 'Ошибка. Попробуй еще раз.')
                return
            profile = u.profiles[u.cur_profile]
            u.cur_profile += 1
            keyboard = types.InlineKeyboardMarkup()
            if u.cur_profile + 1 <= len(u.profiles) and u.cur_profile > 1:
                button1 = types.InlineKeyboardButton(
                    'Следующий >>', callback_data='profile_next')
                button2 = types.InlineKeyboardButton(
                    '<< Предыдущий', callback_data='profile_prev')
                keyboard.row(button2, button1)
            elif u.cur_profile > 1:
                button = types.InlineKeyboardButton(
                    '<< Предыдущий профиль', callback_data='profile_prev')
                keyboard.add(button)
            elif u.cur_profile + 1 <= len(u.profiles):
                button = types.InlineKeyboardButton(
                    'Следующий профиль >>', callback_data='profile_next')
                keyboard.add(button)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.send_message(call.message.chat.id,
                                 cap,
                                 reply_markup=keyboard,
                                 parse_mode='Markdown')
            else:
                photo = photos.download_photo(photo_id)
                bot.send_photo(call.message.chat.id,
                               photo,
                               caption=cap,
                               reply_markup=keyboard,
                               parse_mode='Markdown')
        elif call.data == 'delete_profile':
            db.seeker_delete(str(call.message.chat.id))
            bot.delete_message(call.message.chat.id, call.message.message_id)
            bot.send_message(call.message.chat.id,
                             '*Объявление удалено.*',
                             parse_mode='Markdown')
        elif call.data == 'change_profile':
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\nОткуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            bot.edit_message_reply_markup(chat_id=call.message.chat.id,
                                          message_id=call.message.message_id,
                                          reply_markup=keyboard)
        elif call.data == 'change_name':
            bot.send_message(call.message.chat.id, 'Введите свое новое Имя')
            U.change_st = 1
            U.last_mess_id = call.message.message_id
        elif call.data == 'change_age':
            bot.send_message(call.message.chat.id,
                             'Введите свой новый возраст\n(целое число)')
            U.change_st = 2
            U.last_mess_id = call.message.message_id
        elif call.data == 'change_homeland':
            bot.send_message(
                call.message.chat.id,
                'Введите свое новое место откуда ты родом\n(регион, город)')
            u.change_st = 3
            u.last_mess_id = call.message.message_id
        elif call.data == 'change_desc':
            bot.send_message(call.message.chat.id,
                             'Напиши новое описание о себе')
            u.change_st = 4
            u.last_mess_id = call.message.message_id
コード例 #6
0
def name_insert_data(message):
	global allvars
	add_new_user(message.chat.id)
	u = allvars[message.chat.id]
	if message.text == 'Добавить новое объявление':
		chat_id = str(message.chat.id)
		if db.seeker_check_chat_id(chat_id) == True:
			keyboard = types.InlineKeyboardMarkup()
			button = types.InlineKeyboardButton('Просмотреть профили людей', callback_data = 'rematch_profiles')
			keyboard.add(button)
			bot.send_message(message.chat.id, 'У вас уже есть активное объявление. '
			'Чтобы изменить или удалить объявление перейдите в раздел *\'Мои объявления\'*'
			' в главном меню (/menu).', reply_markup = keyboard, parse_mode = 'Markdown')
			return
		keyboard = types.ReplyKeyboardMarkup(True, False)
		keyboard.row('🔙Назад в меню')
		bot.send_message(message.chat.id, 'Прошу вас заполнить анкету', reply_markup=keyboard)
		time.sleep(1)
		bot.send_message(message.chat.id, 'Введите Ваше имя.')
		u.seeker_search_st = True
		u.mode = 1
	elif message.text == '🔙Назад в меню':
		default_vars(message.chat.id)
		keyboard = types.ReplyKeyboardMarkup(True, True)
		keyboard.row('Добавить новое объявление', 'Просмотреть объявления')
		keyboard.row('Мои объявления', 'Обратная связь')
		bot.send_message(message.chat.id, 'Главное меню', reply_markup=keyboard)
	elif message.text == 'Просмотреть объявления':
		u.search_profile = True
		u.mode = 1
		u.seeker = Seeker()
		bot.send_message(message.chat.id, 'Для более удобного показа профилей прошу вас указать район города и желаемую стоимость аренды')
		time.sleep(1)
		keyboard = types.ReplyKeyboardMarkup(True, True)
		keyboard.row('Алматинский', 'Байконурский')
		keyboard.row('Есильский', 'Сарыаркинский')
		keyboard.row('🔙Назад в меню')
		bot.send_message(message.chat.id, 'Для начала укажите желаемый район', reply_markup = keyboard)
	elif message.text == 'Мои объявления':
		profile = db.get_profile(message.chat.id)
		if profile is None:
			bot.send_message(message.chat.id, 'У вас нет активных объявлений.')
			return
		text = '*Ваши объявления*\n\n'
		if profile is not None:
			text += '*Поиск квартиры*\n'
			text += '📄Подробнее: /advert1' + str(profile[0]) + '\n\n'
		bot.send_message(message.chat.id, text, parse_mode = 'Markdown')
	elif message.text == 'Обратная связь' or u.feedback_st == True:
		if u.feedback_st == False:
			u.feedback_st = True
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('🔙Назад в меню')
			bot.send_message(message.chat.id, 'Оставьте свой отзыв или предложение, отправив нам сообщение!', reply_markup=keyboard)
		else:
			bot.send_message(365391038, str(message.text) + '\nот ' + str(message.from_user.last_name) + ' ' + str(message.from_user.first_name) + ' @' + str(message.from_user.username) )
			default_vars(message.chat.id)
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('Добавить новое объявление', 'Просмотреть объявления')
			keyboard.row('Мои объявления', 'Обратная связь')
			bot.send_message(message.chat.id, 'Спасибо за оставленный отзыв!', reply_markup=keyboard)
	elif u.seeker_st == True or u.seeker_search_st == True:	
		if u.mode == 1:
			u.seeker.chat_id = message.chat.id
			u.seeker.name = message.text
			u.mode = 2
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('🔙Назад в меню')
			bot.send_message(message.chat.id, '*Введите свой возраст.*', parse_mode = 'Markdown', reply_markup = keyboard)
		elif u.mode == 2:
			age = message.text
			if not age.isdigit() or int(age) > 110 or int(age) < 14:
				bot.send_message(message.chat.id, 'Неправильный ввод! Введите целое число.')
				return
			u.seeker.age = int(age)
			u.mode += 1
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('🔙Назад в меню')
			bot.send_message(message.chat.id, '*Откуда Вы родом?*\n(регион, город)', parse_mode = 'Markdown', reply_markup=keyboard)
		elif u.mode == 3:
			u.seeker.homeland = message.text
			u.mode += 1
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('Мужчина', 'Женщина')
			keyboard.row('🔙Назад в меню')
			bot.send_message(message.chat.id, '*Какой у Вас пол?*\n1. Мужчина\n2. Женщина', parse_mode = 'Markdown', reply_markup = keyboard)
		elif u.mode == 4:
			if message.text == 'Мужчина':
				u.seeker.gender = 'Мужчина'
			elif message.text == 'Женщина':
				u.seeker.gender = 'Женщина'
			else:
				keyboard = types.ReplyKeyboardMarkup(True, True)
				keyboard.row('Мужчина', 'Женщина')
				keyboard.row('🔙Назад в меню')
				bot.send_message(message.chat.id, 'Неправильный ввод! Прошу Вас воспользоваться клавиатурой', reply_markup = keyboard)
				return
			u.mode += 1
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('учусь', 'работаю', 'не учусь и не работаю')
			keyboard.row('🔙Назад в меню')
			bot.send_message(message.chat.id, '*Вы учитесь или работаете?*\n1. учусь\n2. работаю\n3. не учусь и не работаю', \
				parse_mode = 'Markdown', reply_markup = keyboard)
		elif u.mode == 5:
			keyboard = types.ReplyKeyboardMarkup(True, True)
			if message.text == 'учусь':
				u.seeker.worker_or_student = 'student'
				keyboard.row('🔙Назад в меню')
				keyboard.row('Astana IT University', 'КазГЮА')
				keyboard.row('Аграрка', 'Назарбаев Университет')
				keyboard.row('Евразийский НУ', 'Университет Астаны')
				keyboard.row('Медунивер', 'Коледж')
				keyboard.row('Другое...')
				bot.send_message(message.chat.id, '*Где Вы учитесь?*', parse_mode = 'Markdown', reply_markup=keyboard)
			elif message.text == 'работаю':
				u.seeker.worker_or_student = 'worker'
				keyboard.row('🔙Назад в меню')
				keyboard.row('Строительство', 'Торговля')
				keyboard.row('IT', 'Образование')
				keyboard.row('Госслужба', 'Работаю на себя')
				keyboard.row('Частная комания', 'Рестораны/кафе')
				keyboard.row('Другое...')
				bot.send_message(message.chat.id, '*Какая у Вас сфера деятельности?*', parse_mode = 'Markdown', reply_markup=keyboard)
			elif message.text == 'не учусь и не работаю':
				u.seeker.worker_or_student = 'neither'
				u.mode += 2
				keyboard = types.ReplyKeyboardMarkup(True, True)
				keyboard.row('Казахский', 'Русский', 'Оба языка')
				keyboard.row('Назад в меню')
				bot.send_message(message.chat.id, '*На каких языках Вы говорите?*\n1. Казахский\n2. Русский\n3. Оба языка',\
					parse_mode = 'Markdown', reply_markup=keyboard)
			else:
				bot.send_message(message.chat.id, 'Неправильный ввод!')
				return
			u.mode += 1
		elif u.mode == 6:
			status = u.seeker.worker_or_student
			if message.text == 'Другое...':
				if status == 'student':
					bot.send_message(message.chat.id, 'Напишите название места где Вы учитесь')
				elif status == 'worker':
					bot.send_message(message.chat.id, 'Напишите сферу деятельности, в которой Вы работаете')
			else:
				u.seeker.study_or_work_place = message.text
				u.mode += 1
				keyboard = types.ReplyKeyboardMarkup(True, True)
				if status == 'student':
					keyboard.row('Жаворонок', 'Сова')
					keyboard.row('🔙Назад в меню')
					bot.send_message(message.chat.id, '*Какой у Вас режим?*\n1. Жаворонок\n2. Сова', \
						parse_mode = 'Markdown', reply_markup=keyboard)
				elif status == 'worker':
					keyboard.row('Жаворонок', 'Сова')
					keyboard.row('🔙Назад в меню')
					bot.send_message(message.chat.id, '*Какой у Вас режим?*\n1. Жаворонок\n2. Сова', \
						parse_mode = 'Markdown', reply_markup=keyboard)
		elif u.mode == 7:
			sleep = message.text
			if sleep == 'Жаворонок' or sleep == 'Сова':
				u.seeker.sleeping_mode = message.text
				u.mode += 1
				keyboard = types.ReplyKeyboardMarkup(True, True)
				keyboard.row('Казахский', 'Русский', 'Оба языка')
				keyboard.row('🔙Назад в меню')
				bot.send_message(message.chat.id, '*На каких языках Вы говорите?*\n1. Казахский\n2. Русский\n3. Оба языка', \
					parse_mode = 'Markdown', reply_markup=keyboard)
			else:
				bot.send_message(message.chat.id, 'Неправильный ввод! Пожалуйста, воспользуйтесь клавиатурой.')
				return
		elif u.mode == 8:
			lang = message.text
			if lang == 'Казахский' or lang == 'Русский' or lang == 'Оба языка': 
				u.seeker.langs = message.text
				u.mode += 1
				keyboard = types.ReplyKeyboardMarkup(True, True)
				keyboard.row('Курю/Не пью', 'Не курю/Пью')
				keyboard.row('Не курю/Не пью', 'Курю/Пью')
				keyboard.row('🔙Назад в меню')
				bot.send_message(message.chat.id, '*Какие у Вас вредные привычки?*', parse_mode = 'Markdown', reply_markup=keyboard)
			else:
				bot.send_message(message.chat.id, 'Неправильный ввод! Пожалуйста, воспользуйтесь клавиатурой.')
				return
		elif u.mode == 9:
			bad = message.text
			if bad == 'Курю/Не пью' or bad == 'Не курю/Пью' or bad == 'Не курю/Не пью' or bad == 'Курю/Пью':
				u.seeker.bad_habits = message.text
				u.mode += 1
				keyboard = types.ReplyKeyboardMarkup(True, True)
				keyboard.row('Да', 'Нет')
				keyboard.row('🔙Назад в меню')
				bot.send_message(message.chat.id, '*Умеете ли Вы готовить?*', parse_mode = 'Markdown', reply_markup=keyboard)
			else:
				bot.send_message(message.chat.id, 'Неправильный ввод! Пожалуйста, воспользуйтесь клавиатурой.')
				return
		elif u.mode == 10:
			if message.text == 'Да':
				u.seeker.food = True
			elif message.text == 'Нет':
				u.seeker.food = False
			else:
				bot.send_message(message.chat.id, 'Неправильный ввод!\n(Да/Нет)')
				return
			u.mode += 1
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('Да', 'Нет')
			keyboard.row('🔙Назад в меню')
			bot.send_message(message.chat.id, 'Вы ищете людей на подселение в свою квартиру?', reply_markup=keyboard)
		elif u.mode == 11:
			if message.text == 'Да':
				u.seeker.hata = True
				keyboard = types.ReplyKeyboardMarkup(True, True)
				keyboard.row('Алматинский', 'Байконурский')
				keyboard.row('Есильский', 'Сарыаркинский')
				keyboard.row('🔙Назад в меню')
				bot.send_message(message.chat.id, 'В каком районе находится ваша квартира?', reply_markup = keyboard)
			elif message.text == 'Нет':
				u.seeker.hata = False
				keyboard = types.ReplyKeyboardMarkup(True, True)
				keyboard.row('Алматинский', 'Байконурский')
				keyboard.row('Есильский', 'Сарыаркинский')
				keyboard.row('🔙Назад в меню')
				bot.send_message(message.chat.id, 'Желаемый район города', reply_markup = keyboard)
			else:
				bot.send_message(message.chat.id, 'Неправильный ввод.\n(Да/Нет)')
				return
			u.mode += 1
		elif u.mode == 12:
			distr = message.text
			if distr == 'Алматинский' or distr == 'Байконурский' or distr == 'Есильский' or distr == 'Сарыаркинский':
				u.seeker.distr = message.text
				u.mode += 1
				if u.seeker.hata == True:
					u.mode += 2
					keyboard = types.ReplyKeyboardMarkup(True, True)
					keyboard.row('до 20.000 тенге', 'от 20.000 до 30.000 тенге')
					keyboard.row('от 30.000 до 40.000 тенге', 'от 40.000 до 50.000 тенге')
					keyboard.row('выше 50.000 тенге', '🔙Назад в меню')
					bot.send_message(message.chat.id, 'Стоимость аренды квартиры с одного человека', reply_markup=keyboard)
				else:	
					bot.send_message(message.chat.id, 'Уточните возле чего вам удобно жить(название \
					микрорайона, магазин, бизнес-центр, пересечение улиц, достопримечательность)')
			else:
				bot.send_message(message.chat.id, 'Неправильный ввод!')
				return
		elif u.mode == 13:
			u.seeker.near_what = message.text
			u.mode += 1
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('до 20.000 тенге', 'от 20.000 до 30.000 тенге')
			keyboard.row('от 30.000 до 40.000 тенге', 'от 40.000 до 50.000 тенге')
			keyboard.row('выше 50.000 тенге', '🔙Назад в меню')
			bot.send_message(message.chat.id, 'Желательная цена', reply_markup=keyboard)
		elif u.mode == 14:
			price = message.text
			if price == 'до 20.000 тенге' or price == 'от 20.000 до 30.000 тенге' or price == 'от 30.000 до 40.000 тенге'\
			or price == 'от 40.000 до 50.000 тенге' or price == 'выше 50.000 тенге':
				u.seeker.price = message.text
				keyboard = types.ReplyKeyboardMarkup(True, True)
				keyboard.row('Отдельную комнату', 'Можно с кем-нибудь в комнате')
				keyboard.row('Оба варианта')
				keyboard.row('🔙Назад в меню')
				bot.send_message(message.chat.id, 'Я ищу...', reply_markup=keyboard)
				u.mode += 1
			else:
				bot.send_message(message.chat.id, 'Неправильный ввод! Пожалуйста, воспользуйтесь клавиатурой.')
				return
		elif u.mode == 15:
			if u.seeker.hata == True:
				u.seeker.price = message.text
			else:
				u.seeker.seeking_for = message.text
			u.mode += 1
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('🔙Назад в меню')
			bot.send_message(message.chat.id, 'Расскажите о себе (интересы, хобби, путешествия, книги, фильмы)',reply_markup=keyboard)
		elif u.mode == 16:
			u.seeker.interest = message.text
			u.mode += 1
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('🔙Назад в меню')
			bot.send_message(message.chat.id, 'Введите ваш номер телефона\n(пример: 8-ххх-ххх-хх-хх)', reply_markup=keyboard)
		elif u.mode == 17:
			num = message.text
			digits = 0
			correct = True
			for a in num:
				if a.isdigit():
					digits += 1
				elif a != '-':
					correct = False
			if digits != 11:
				correct = False
			if not correct:
				bot.send_message(message.chat.id, 'Неправильный ввод!')
				return
			u.seeker.phone_num = message.text
			keyboard = types.ReplyKeyboardMarkup(True, True)
			keyboard.row('🔙Назад в меню')
			bot.send_message(message.chat.id, 'Прошу Вас отправить своё селфи', reply_markup=keyboard)
			u.mode += 1
		elif u.mode == 18:
			bot.send_message(message.chat.id, 'Загрузите фотографию')
	elif u.search_profile == True:
		if u.mode == 1:
			distr = message.text
			if distr == 'Алматинский' or distr == 'Байконурский' or distr == 'Есильский' or distr == 'Сарыаркинский':
				u.seeker.distr = message.text
				u.mode += 1
				keyboard = types.ReplyKeyboardMarkup(True, True)
				keyboard.row('до 20.000 тенге', 'от 20.000 до 30.000 тенге')
				keyboard.row('от 30.000 до 40.000 тенге', 'от 40.000 до 50.000 тенге')
				keyboard.row('выше 50.000 тенге', '🔙Назад в меню')
				bot.send_message(message.chat.id, 'Теперь укажите желаемую стоимость аренды.', reply_markup=keyboard)
			else:
				bot.send_message(message.chat.id, 'Неправильный ввод!')
		elif u.mode == 2:
			u.seeker.price = message.text
			u.seeker.chat_id = message.chat.id
			u.seeker.hata = None
			u.profiles = db.get_profiles_by_filters(u.seeker)
			u.seeker = Seeker()
			u.search_profile = False
			u.mode = 0
			if u.profiles is None or u.cur_profile >= len(u.profiles) or u.cur_profile < 0:
				bot.send_message(message.chat.id, 'Ошибка. Попробуйте еще раз.')
				return
			profile = u.profiles[u.cur_profile]
			u.cur_profile += 1
			keyboard = types.InlineKeyboardMarkup()
			if u.cur_profile + 1 <= len(u.profiles) and u.cur_profile > 1:
				button1 = types.InlineKeyboardButton('Следующий >>', callback_data = 'profile_next')
				button2 = types.InlineKeyboardButton('<< Предыдущий', callback_data = 'profile_prev')
				keyboard.row(button2, button1)
			elif u.cur_profile > 1:
				button = types.InlineKeyboardButton('<< Предыдущий профиль', callback_data = 'profile_prev')
				keyboard.add(button)
			elif u.cur_profile + 1 <= len(u.profiles):
				button = types.InlineKeyboardButton('Следующий профиль >>', callback_data = 'profile_next')
				keyboard.add(button)
			cap = profile_info(profile)
			photo_id = db.get_profile_photo(profile[0])
			if photo_id == '0':
				bot.send_message(message.chat.id, cap, reply_markup = keyboard, parse_mode = 'Markdown')
			else: 
				photo = photos.download_photo(photo_id)
				bot.send_photo(message.chat.id, photo, caption = cap, reply_markup = keyboard, parse_mode = 'Markdown')
	elif u.change_st > 0:
		if change_st == 1:
			name = message.text
			db.change_name(message.chat.id, name)
			bot.send_message(message.chat.id, 'Ваше Имя успешно изменено!')
			profile = db.get_profile(message.chat.id)
			keyboard = types.InlineKeyboardMarkup()
			button1 = types.InlineKeyboardButton('Изменить Имя', callback_data = 'change_name')
			button2 = types.InlineKeyboardButton('Изменить Возраст', callback_data = 'change_age')
			button3 = types.InlineKeyboardButton('Изменить\nОткуда Родом', callback_data = 'change_homeland')
			button4 = types.InlineKeyboardButton('Изменить О себе', callback_data = 'change_desc')
			keyboard.row(button1, button2)
			keyboard.row(button3, button4)
			cap = profile_info(profile)
			photo_id = db.get_profile_photo(profile[0])
			if photo_id == '0':
				bot.edit_message_text(chat_id = message.chat.id, message_id = last_mess_id, text = cap, reply_markup = keyboard, parse_mode = 'Markdown')
			else: 
				bot.edit_message_caption(chat_id = message.chat.id, message_id = last_mess_id, caption = cap, reply_markup = keyboard, parse_mode = 'Markdown')
			change_st = 0
		elif change_st == 2:
			age = message.text
			if not age.isdigit():
				bot.send_message(message.chat.id, 'Введите целое число!')
				return
			db.change_age(message.chat.id, age)
			bot.send_message(message.chat.id, 'Ваш возраст успешно изменен!')
			profile = db.get_profile(message.chat.id)
			keyboard = types.InlineKeyboardMarkup()
			button1 = types.InlineKeyboardButton('Изменить Имя', callback_data = 'change_name')
			button2 = types.InlineKeyboardButton('Изменить Возраст', callback_data = 'change_age')
			button3 = types.InlineKeyboardButton('Изменить\nОткуда Родом', callback_data = 'change_homeland')
			button4 = types.InlineKeyboardButton('Изменить О себе', callback_data = 'change_desc')
			keyboard.row(button1, button2)
			keyboard.row(button3, button4)
			cap = profile_info(profile)
			photo_id = db.get_profile_photo(profile[0])
			if photo_id == '0':
				bot.edit_message_text(chat_id = message.chat.id, message_id = last_mess_id, text = cap, reply_markup = keyboard, parse_mode = 'Markdown')
			else: 
				bot.edit_message_caption(chat_id = message.chat.id, message_id = last_mess_id, caption = cap, reply_markup=keyboard, parse_mode = 'Markdown')
			change_st = 0
		elif change_st == 3:
			homeland = message.text
			db.change_homeland(message.chat.id, homeland)
			bot.send_message(message.chat.id, 'Ваше место откуда Вы родом успешно изменено!')
			profile = db.get_profile(message.chat.id)
			keyboard = types.InlineKeyboardMarkup()
			button1 = types.InlineKeyboardButton('Изменить Имя', callback_data = 'change_name')
			button2 = types.InlineKeyboardButton('Изменить Возраст', callback_data = 'change_age')
			button3 = types.InlineKeyboardButton('Изменить\nОткуда Родом', callback_data = 'change_homeland')
			button4 = types.InlineKeyboardButton('Изменить О себе', callback_data = 'change_desc')
			keyboard.row(button1, button2)
			keyboard.row(button3, button4)
			cap = profile_info(profile)
			photo_id = db.get_profile_photo(profile[0])
			if photo_id == '0':
				bot.edit_message_text(chat_id = message.chat.id, message_id = last_mess_id, text = cap, reply_markup = keyboard, parse_mode = 'Markdown')
			else: 
				bot.edit_message_caption(chat_id = message.chat.id, message_id = last_mess_id, caption = cap, reply_markup=keyboard, parse_mode = 'Markdown')
			change_st = 0
		elif change_st == 4:
			desc = message.text
			db.change_desc(message.chat.id, desc)
			bot.send_message(message.chat.id, 'Ваше описание о себе успешно изменено!')
			profile = db.get_profile(message.chat.id)
			keyboard = types.InlineKeyboardMarkup()
			button1 = types.InlineKeyboardButton('Изменить Имя', callback_data = 'change_name')
			button2 = types.InlineKeyboardButton('Изменить Возраст', callback_data = 'change_age')
			button3 = types.InlineKeyboardButton('Изменить\nОткуда Родом', callback_data = 'change_homeland')
			button4 = types.InlineKeyboardButton('Изменить О себе', callback_data = 'change_desc')
			keyboard.row(button1, button2)
			keyboard.row(button3, button4)
			cap = profile_info(profile)
			photo_id = db.get_profile_photo(profile[0])
			if photo_id == '0':
				bot.edit_message_text(chat_id = message.chat.id, message_id = last_mess_id, text = cap, reply_markup = keyboard, parse_mode = 'Markdown')
			else: 
				bot.edit_message_caption(chat_id = message.chat.id, message_id = last_mess_id, caption = cap, reply_markup=keyboard, parse_mode = 'Markdown')
			change_st = 0
	else:
		bot.send_message(message.chat.id, 'Чтобы выйти в главное меню выполните команду /menu')
コード例 #7
0
ファイル: bot.py プロジェクト: alimzhan2000/roombashare
def name_insert_data(message):
    global allvars
    add_new_user(message.chat.id)
    u = allvars[message.chat.id]
    if message.text == 'Создать объявление\n и начать поиск':
        chat_id = str(message.chat.id)
        if db.seeker_check_chat_id(chat_id) == True:
            keyboard = types.InlineKeyboardMarkup()
            button = types.InlineKeyboardButton(
                'Просмотреть профили людей', callback_data='rematch_profiles')
            keyboard.add(button)
            bot.send_message(
                message.chat.id,
                'Привет мой старый друг! Так как у тебя уже есть активное объявление можешь сразу просмотреть профили. '
                'Если ты хочешь что-то изменить или удалить свое объявление, переходи в раздел *\'Мои объявления\'*'
                ' в главном меню (/menu)',
                reply_markup=keyboard,
                parse_mode='Markdown')
            return
        keyboard = types.ReplyKeyboardMarkup(True, False)
        keyboard.row('🔙Назад в меню')
        bot.send_message(
            message.chat.id,
            'Хээй🙌 Давай начнем наше знакомство и заодно заполним тебе анкету',
            reply_markup=keyboard)
        time.sleep(1)
        bot.send_message(message.chat.id, 'Для начала скажи свое имя')
        u.seeker_search_st = True
        u.mode = 1
    elif message.text == '🔙Назад в меню':
        default_vars(message.chat.id)
        keyboard = types.ReplyKeyboardMarkup(True, True)
        keyboard.row('Создать объявление\n и начать поиск', 'Быстрый поиск')
        keyboard.row('Мои объявления', 'Обратная связь')
        bot.send_message(message.chat.id,
                         'Главное меню',
                         reply_markup=keyboard)
    elif message.text == 'Быстрый поиск':
        u.search_profile = True
        u.mode = 1
        u.seeker = Seeker()
        bot.send_message(
            message.chat.id,
            'Для более удобного показа профилей прошу вас указать район города и желаемую стоимость аренды'
        )
        time.sleep(1)
        keyboard = types.ReplyKeyboardMarkup(True, True)
        keyboard.row('Алматинский', 'Байконурский')
        keyboard.row('Есильский', 'Сарыаркинский')
        keyboard.row('🔙Назад в меню')
        bot.send_message(message.chat.id,
                         'Для начала укажите желаемый район',
                         reply_markup=keyboard)
    elif message.text == 'Мои объявления':
        profile = db.get_profile(message.chat.id)
        if profile is None:
            bot.send_message(message.chat.id,
                             'У тебя нет активных объявлений.')
            return
        text = '*Твои объявления*\n\n'
        if profile is not None:
            text += '*Поиск квартиры*\n'
            text += '📄Подробнее: /advert1' + str(profile[0]) + '\n\n'
        bot.send_message(message.chat.id, text, parse_mode='Markdown')
    elif message.text == 'Обратная связь' or u.feedback_st == True:
        if u.feedback_st == False:
            u.feedback_st = True
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Оставьте свой отзыв или предложение, отправив нам сообщение!',
                reply_markup=keyboard)
        else:
            bot.send_message(
                365391038,
                str(message.text) + '\nот ' +
                str(message.from_user.last_name) + ' ' +
                str(message.from_user.first_name) + ' @' +
                str(message.from_user.username))
            default_vars(message.chat.id)
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('Создать объявление\n и начать поиск',
                         'Быстрый поиск')
            keyboard.row('Мои объявления', 'Обратная связь')
            bot.send_message(message.chat.id,
                             'Спасибо за оставленный отзыв!',
                             reply_markup=keyboard)
    elif u.seeker_st == True or u.seeker_search_st == True:
        if u.mode == 1:
            u.seeker.chat_id = message.chat.id
            u.seeker.name = message.text
            u.mode = 2
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Приятно познакомиться :) Теперь укажи свой возраст(извини если грубо - это нужно)',
                parse_mode='Markdown',
                reply_markup=keyboard)
        elif u.mode == 2:
            age = message.text
            if not age.isdigit() or int(age) > 110 or int(age) < 14:
                bot.send_message(
                    message.chat.id,
                    'У нас пользователи старше 14 лет. Извини :(')
                return
            u.seeker.age = int(age)
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Так, с возрастом закончили. Кстати, хотел у тебя еще узнать, с какого ты города или региона приехал/а?',
                parse_mode='Markdown',
                reply_markup=keyboard)
        elif u.mode == 3:
            u.seeker.homeland = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('Мужской', 'Женский')
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Вау, я тоже оттуда! Мы с тобой земляки😏 Теперь укажи свой пол',
                parse_mode='Markdown',
                reply_markup=keyboard)
        elif u.mode == 4:
            if message.text == 'Мужской':
                u.seeker.gender = 'Мужской'
            elif message.text == 'Женский':
                u.seeker.gender = 'Женский'
            else:
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Мужской', 'Женский')
                keyboard.row('🔙Назад в меню')
                bot.send_message(
                    message.chat.id,
                    'Упс, что-то не вышло. Выбери еще раз. Только воспользуйся кнопочками внизу ("Мужской", "Женский")',
                    reply_markup=keyboard)
                return
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('Учусь', 'Работаю', 'Не учусь и не работаю')
            keyboard.row('🔙Назад в меню')
            bot.send_message(message.chat.id, 'Хотел у тебя еще спросить твой основной род деятельности. Ты пока учишься или уже работаешь?\n1. Учусь\n2. Работаю\n3. Не учусь и не работаю', \
             parse_mode = 'Markdown', reply_markup = keyboard)
        elif u.mode == 5:
            keyboard = types.ReplyKeyboardMarkup(True, True)
            if message.text == 'Учусь':
                u.seeker.worker_or_student = 'student'
                keyboard.row('🔙Назад в меню')
                keyboard.row('Astana IT University', 'КазГЮА')
                keyboard.row('Аграрка', 'Назарбаев Университет')
                keyboard.row('Евразийский НУ', 'Университет Астаны')
                keyboard.row('Медунивер', 'Коледж')
                keyboard.row('Другое...')
                bot.send_message(
                    message.chat.id,
                    'Ух ты. Люблю образованных людей🎓 В каком заведнии ты учишься?',
                    parse_mode='Markdown',
                    reply_markup=keyboard)
            elif message.text == 'Работаю':
                u.seeker.worker_or_student = 'worker'
                keyboard.row('🔙Назад в меню')
                keyboard.row('Строительство', 'Торговля')
                keyboard.row('IT', 'Образование')
                keyboard.row('Госслужба', 'Работаю на себя')
                keyboard.row('Частная комания', 'Рестораны/кафе')
                keyboard.row('Другое...')
                bot.send_message(
                    message.chat.id,
                    'Ух ты. Люблю деловых людей! В какой сфере ты работаешь?',
                    parse_mode='Markdown',
                    reply_markup=keyboard)
            elif message.text == 'Не учусь и не работаю':
                u.seeker.worker_or_student = 'neither'
                u.mode += 2
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Казахский', 'Русский', 'Оба языка')
                keyboard.row('Назад в меню')
                bot.send_message(message.chat.id, 'На каких языках ты умеешь говорить?\n1. Казахский\n2. Русский\n3. Оба языка',\
                 parse_mode = 'Markdown', reply_markup=keyboard)
            else:
                bot.send_message(
                    message.chat.id,
                    'Хээй! Вводи пожалуйста с клавиатуры. Я просто по-другому не понимаю😓'
                )
                return
            u.mode += 1
        elif u.mode == 6:
            status = u.seeker.worker_or_student
            if message.text == 'Другое...':
                if status == 'student':
                    bot.send_message(
                        message.chat.id,
                        'Напишите название своего места обучения')
                elif status == 'worker':
                    bot.send_message(
                        message.chat.id,
                        'Напишите сферу деятельности, в которой ты работаешь')
            else:
                u.seeker.study_or_work_place = message.text
                u.mode += 1
                keyboard = types.ReplyKeyboardMarkup(True, True)
                if status == 'student':
                    keyboard.row('Днем', 'Ночью')
                    keyboard.row('🔙Назад в меню')
                    bot.send_message(message.chat.id, 'Какой у тебя режим учебы?\n1. Днем\n2. Ночью', \
                     parse_mode = 'Markdown', reply_markup=keyboard)
                elif status == 'worker':
                    keyboard.row('Днем', 'Ночью')
                    keyboard.row('🔙Назад в меню')
                    bot.send_message(message.chat.id, 'Какой у тебя режим работы?\n1. Днем\n2. Ночью', \
                     parse_mode = 'Markdown', reply_markup=keyboard)
        elif u.mode == 7:
            sleep = message.text
            if sleep == 'Днем' or sleep == 'Ночью':
                u.seeker.sleeping_mode = message.text
                u.mode += 1
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Казахский', 'Русский', 'Оба языка')
                keyboard.row('🔙Назад в меню')
                bot.send_message(message.chat.id, 'Так, половину пути мы с тобой уже прошли. Осталось еще немного. Укажи языки, на которых ты умеешь говорить:\n1. Казахский\n2. Русский\n3. Оба языка', \
                 parse_mode = 'Markdown', reply_markup=keyboard)
            else:
                bot.send_message(
                    message.chat.id,
                    'Выбирай кнопочки пожалуйста) Я по-другому не понимаю😓')
                return
        elif u.mode == 8:
            lang = message.text
            if lang == 'Казахский' or lang == 'Русский' or lang == 'Оба языка':
                u.seeker.langs = message.text
                u.mode += 1
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Курю/Не пью', 'Не курю/Пью')
                keyboard.row('Не курю/Не пью', 'Курю/Пью')
                keyboard.row('🔙Назад в меню')
                bot.send_message(message.chat.id,
                                 'Какие у тебя есть вредные привычки?',
                                 parse_mode='Markdown',
                                 reply_markup=keyboard)
            else:
                bot.send_message(
                    message.chat.id,
                    'Выбирай кнопочки пожалуйста) Я по-другому не понимаю😓')
                return
        elif u.mode == 9:
            bad = message.text
            if bad == 'Курю/Не пью' or bad == 'Не курю/Пью' or bad == 'Не курю/Не пью' or bad == 'Курю/Пью':
                u.seeker.bad_habits = message.text
                u.mode += 1
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Да', 'Нет')
                keyboard.row('🔙Назад в меню')
                bot.send_message(message.chat.id,
                                 'Умеешь ли Вы готовить?',
                                 parse_mode='Markdown',
                                 reply_markup=keyboard)
            else:
                bot.send_message(
                    message.chat.id,
                    'Выбирай кнопочки пожалуйста) Я по-другому не понимаю😓')
                return
        elif u.mode == 10:
            if message.text == 'Да':
                u.seeker.food = True
            elif message.text == 'Нет':
                u.seeker.food = False
            else:
                bot.send_message(
                    message.chat.id,
                    'Выбирай кнопочки пожалуйста) Я по-другому не понимаю😓')
                return
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('Людей', 'Жилье')
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Самый главный вопрос! Ты ищещь людей к себе на подселение или ищешь жилье для совместной аренды?',
                reply_markup=keyboard)
        elif u.mode == 11:
            if message.text == 'Людей':
                u.seeker.hata = True
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Алматинский', 'Байконурский')
                keyboard.row('Есильский', 'Сарыаркинский')
                keyboard.row('🔙Назад в меню')
                bot.send_message(message.chat.id,
                                 'В каком районе находится твоя квартира?',
                                 reply_markup=keyboard)
            elif message.text == 'Жилье':
                u.seeker.hata = False
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Алматинский', 'Байконурский')
                keyboard.row('Есильский', 'Сарыаркинский')
                keyboard.row('🔙Назад в меню')
                bot.send_message(message.chat.id,
                                 'Желаемый район города',
                                 reply_markup=keyboard)
            else:
                bot.send_message(message.chat.id,
                                 'Выбирай копочки пожалуйста:\n(Да/Нет)')
                return
            u.mode += 1
        elif u.mode == 12:
            distr = message.text
            if distr == 'Алматинский' or distr == 'Байконурский' or distr == 'Есильский' or distr == 'Сарыаркинский':
                u.seeker.distr = message.text
                u.mode += 1
                if u.seeker.hata == True:
                    u.mode += 2
                    keyboard = types.ReplyKeyboardMarkup(True, True)
                    keyboard.row('до 20.000 тенге',
                                 'от 20.000 до 30.000 тенге')
                    keyboard.row('от 30.000 до 40.000 тенге',
                                 'от 40.000 до 50.000 тенге')
                    keyboard.row('выше 50.000 тенге', '🔙Назад в меню')
                    bot.send_message(
                        message.chat.id,
                        'Вау, это моq самый любимый район! Сколько ты хочешь брать арендную плату с одного человека?',
                        reply_markup=keyboard)
                else:
                    bot.send_message(
                        message.chat.id,
                        'Уточни возле какого здания тебе бы хотелось найти жилье(название \
					микрорайона, магазин🏪, бизнес-центр🏢, пересечение улиц, достопримечательность🏯)'
                    )
            else:
                bot.send_message(
                    message.chat.id,
                    'Хээй. Выбирай кнопочками. Я по-другому не понимаю :(')
                return
        elif u.mode == 13:
            u.seeker.near_what = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('до 20.000 тенге', 'от 20.000 до 30.000 тенге')
            keyboard.row('от 30.000 до 40.000 тенге',
                         'от 40.000 до 50.000 тенге')
            keyboard.row('выше 50.000 тенге', '🔙Назад в меню')
            bot.send_message(message.chat.id,
                             'Желательная цена',
                             reply_markup=keyboard)
        elif u.mode == 14:
            price = message.text
            if price == 'до 20.000 тенге' or price == 'от 20.000 до 30.000 тенге' or price == 'от 30.000 до 40.000 тенге'\
            or price == 'от 40.000 до 50.000 тенге' or price == 'выше 50.000 тенге':
                u.seeker.price = message.text
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('Отдельную комнату',
                             'Можно с кем-нибудь в комнате')
                keyboard.row('Оба варианта')
                keyboard.row('🔙Назад в меню')
                bot.send_message(message.chat.id,
                                 'Я ищу...',
                                 reply_markup=keyboard)
                u.mode += 1
            else:
                bot.send_message(
                    message.chat.id,
                    'Неправильный ввод! Пожалуйста, воспользуйся клавиатурой.')
                return
        elif u.mode == 15:
            if u.seeker.hata == True:
                u.seeker.price = message.text
            else:
                u.seeker.seeking_for = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Теперь я хочу узнать по больше о твоих интересах🎤, хобби🏀. Люблю знакомиться с интересными личностями😊',
                reply_markup=keyboard)
        elif u.mode == 16:
            u.seeker.interest = message.text
            u.mode += 1
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Можешь ввести свой номер телефона? P.S. Не переживай, я тебе не буду писать:)\n(пример: 8-ххх-ххх-хх-хх)',
                reply_markup=keyboard)
        elif u.mode == 17:
            num = message.text
            digits = 0
            correct = True
            for a in num:
                if a.isdigit():
                    digits += 1
                elif a != '-':
                    correct = False
            if digits != 11:
                correct = False
            if not correct:
                bot.send_message(
                    message.chat.id,
                    'Вводи следуя этому примеру: 8-ххх-ххх-хх-хх')
                return
            u.seeker.phone_num = message.text
            keyboard = types.ReplyKeyboardMarkup(True, True)
            keyboard.row('🔙Назад в меню')
            bot.send_message(
                message.chat.id,
                'Отправь своё селфи. Хочу увидеть тебя вживую. Только не стесняйся :з',
                reply_markup=keyboard)
            u.mode += 1
        elif u.mode == 18:
            bot.send_message(message.chat.id, 'Загрузи фотографию')
    elif u.search_profile == True:
        if u.mode == 1:
            distr = message.text
            if distr == 'Алматинский' or distr == 'Байконурский' or distr == 'Есильский' or distr == 'Сарыаркинский':
                u.seeker.distr = message.text
                u.mode += 1
                keyboard = types.ReplyKeyboardMarkup(True, True)
                keyboard.row('до 20.000 тенге', 'от 20.000 до 30.000 тенге')
                keyboard.row('от 30.000 до 40.000 тенге',
                             'от 40.000 до 50.000 тенге')
                keyboard.row('выше 50.000 тенге', '🔙Назад в меню')
                bot.send_message(message.chat.id,
                                 'Теперь укажи желаемую стоимость аренды.',
                                 reply_markup=keyboard)
            else:
                bot.send_message(
                    message.chat.id,
                    'Извини, но тебе нужно выбирать с помощью кнопочек')
        elif u.mode == 2:
            u.seeker.price = message.text
            u.seeker.chat_id = message.chat.id
            u.seeker.hata = None
            u.profiles = db.get_profiles_by_filters(u.seeker)
            u.seeker = Seeker()
            u.search_profile = False
            u.mode = 0
            if u.profiles is None or u.cur_profile >= len(
                    u.profiles) or u.cur_profile < 0:
                bot.send_message(
                    message.chat.id,
                    'Так, видно ты у нас самый первый! Подожди немного, пока придут еще люди. С таким интересным человеком думаю все захотят жить)'
                )
                return
            profile = u.profiles[u.cur_profile]
            u.cur_profile += 1
            keyboard = types.InlineKeyboardMarkup()
            if u.cur_profile + 1 <= len(u.profiles) and u.cur_profile > 1:
                button1 = types.InlineKeyboardButton(
                    'Следующий >>', callback_data='profile_next')
                button2 = types.InlineKeyboardButton(
                    '<< Предыдущий', callback_data='profile_prev')
                keyboard.row(button2, button1)
            elif u.cur_profile > 1:
                button = types.InlineKeyboardButton(
                    '<< Предыдущий профиль', callback_data='profile_prev')
                keyboard.add(button)
            elif u.cur_profile + 1 <= len(u.profiles):
                button = types.InlineKeyboardButton(
                    'Следующий профиль >>', callback_data='profile_next')
                keyboard.add(button)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.send_message(message.chat.id,
                                 cap,
                                 reply_markup=keyboard,
                                 parse_mode='Markdown')
            else:
                photo = photos.download_photo(photo_id)
                bot.send_photo(message.chat.id,
                               photo,
                               caption=cap,
                               reply_markup=keyboard,
                               parse_mode='Markdown')
    elif u.change_st > 0:
        if u.change_st == 1:
            name = message.text
            db.change_name(message.chat.id, name)
            bot.send_message(message.chat.id, 'Твое имя успешно изменено!')
            profile = db.get_profile(message.chat.id)
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\nОткуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.edit_message_text(chat_id=message.chat.id,
                                      message_id=u.last_mess_id,
                                      text=cap,
                                      reply_markup=keyboard,
                                      parse_mode='Markdown')
            else:
                bot.edit_message_caption(chat_id=message.chat.id,
                                         message_id=u.last_mess_id,
                                         caption=cap,
                                         reply_markup=keyboard,
                                         parse_mode='Markdown')
            u.change_st = 0
        elif u.change_st == 2:
            age = message.text
            if not age.isdigit():
                bot.send_message(message.chat.id, 'Введи целое число!')
                return
            db.change_age(message.chat.id, age)
            bot.send_message(message.chat.id, 'Твой возраст успешно изменен!')
            profile = db.get_profile(message.chat.id)
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\nОткуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.edit_message_text(chat_id=message.chat.id,
                                      message_id=u.last_mess_id,
                                      text=cap,
                                      reply_markup=keyboard,
                                      parse_mode='Markdown')
            else:
                bot.edit_message_caption(chat_id=message.chat.id,
                                         message_id=u.last_mess_id,
                                         caption=cap,
                                         reply_markup=keyboard,
                                         parse_mode='Markdown')
            u.change_st = 0
        elif u.change_st == 3:
            homeland = message.text
            db.change_homeland(message.chat.id, homeland)
            bot.send_message(message.chat.id,
                             'Твое место откуда ты родом успешно изменено!')
            profile = db.get_profile(message.chat.id)
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\nОткуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.edit_message_text(chat_id=message.chat.id,
                                      message_id=u.last_mess_id,
                                      text=cap,
                                      reply_markup=keyboard,
                                      parse_mode='Markdown')
            else:
                bot.edit_message_caption(chat_id=message.chat.id,
                                         message_id=u.last_mess_id,
                                         caption=cap,
                                         reply_markup=keyboard,
                                         parse_mode='Markdown')
            u.change_st = 0
        elif u.change_st == 4:
            desc = message.text
            db.change_desc(message.chat.id, desc)
            bot.send_message(message.chat.id,
                             'Твое описание о себе успешно изменено!')
            profile = db.get_profile(message.chat.id)
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\n Откуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            if photo_id == '0':
                bot.edit_message_text(chat_id=message.chat.id,
                                      message_id=u.last_mess_id,
                                      text=cap,
                                      reply_markup=keyboard,
                                      parse_mode='Markdown')
            else:
                bot.edit_message_caption(chat_id=message.chat.id,
                                         message_id=u.last_mess_id,
                                         caption=cap,
                                         reply_markup=keyboard,
                                         parse_mode='Markdown')
            u.change_st = 0
    else:
        bot.send_message(message.chat.id,
                         'Чтобы выйти в главное меню выполните команду /menu')
コード例 #8
0
ファイル: bot.py プロジェクト: alimzhan2000/roombashare
def callback(call):
    global allvars
    add_new_user(call.message.chat.id)
    u = allvars[call.message.chat.id]
    if call.message:
        if call.data == 'profile_next' or call.data == 'profile_prev' or call.data == 'rematch_profiles':
            #bot.delete_message(call.message.chat.id, call.message.message_id)
            if call.data == 'rematch_profiles':
                profile = db.get_profile(call.message.chat.id)
                seeker = Seeker(profile)
                u.profiles = db.get_profiles_by_filters(seeker)
            if call.data == 'profile_prev':
                u.cur_profile -= 2
            if u.profiles is None or u.cur_profile >= len(
                    u.profiles) or u.cur_profile < 0:
                bot.send_message(
                    call.message.chat.id,
                    'Упс. Похоже ты у нас первый клиент🙀!Подожди немного или попробуй через некоторое время'
                )
                return
            profile = u.profiles[u.cur_profile]
            u.cur_profile += 1
            keyboard = types.InlineKeyboardMarkup()
            if u.cur_profile + 1 <= len(u.profiles) and u.cur_profile > 1:
                button1 = types.InlineKeyboardButton(
                    'Следующий >>', callback_data='profile_next')
                button2 = types.InlineKeyboardButton(
                    '<< Предыдущий', callback_data='profile_prev')
                keyboard.row(button2, button1)
            elif u.cur_profile > 1:
                button = types.InlineKeyboardButton(
                    '<< Предыдущий профиль', callback_data='profile_prev')
                keyboard.add(button)
            elif u.cur_profile + 1 <= len(u.profiles):
                button = types.InlineKeyboardButton(
                    'Следующий профиль >>', callback_data='profile_next')
                keyboard.add(button)
            cap = profile_info(profile)
            photo_id = db.get_profile_photo(profile[0])
            # if photo_id == '0':
            # 	bot.edit_message_caption(call.message.chat.id, cap, reply_markup = keyboard, parse_mode = 'Markdown')
            # else:
            # 	photo = photos.download_photo(photo_id)
            # 	bot.send_photo(call.message.chat.id, photo, caption = cap, reply_markup = keyboard, parse_mode = 'Markdown')
            photo = photos.download_photo(photo_id)
            ph = InputMediaPhoto(photo, caption=cap)
            if call.data != 'rematch_profiles':
                bot.edit_message_media(chat_id=call.message.chat.id,
                                       message_id=call.message.message_id,
                                       media=ph,
                                       reply_markup=keyboard)
            else:
                bot.delete_message(call.message.chat.id,
                                   call.message.message_id)
                photo = photos.download_photo(photo_id)
                bot.send_photo(call.message.chat.id,
                               photo,
                               caption=cap,
                               reply_markup=keyboard,
                               parse_mode='Markdown')
        elif call.data == 'delete_profile':
            db.seeker_delete(str(call.message.chat.id))
            bot.delete_message(call.message.chat.id, call.message.message_id)
            bot.send_message(call.message.chat.id,
                             '*Объявление удалено.*',
                             parse_mode='Markdown')
        elif call.data == 'change_profile':
            keyboard = types.InlineKeyboardMarkup()
            button1 = types.InlineKeyboardButton('Изменить Имя',
                                                 callback_data='change_name')
            button2 = types.InlineKeyboardButton('Изменить Возраст',
                                                 callback_data='change_age')
            button3 = types.InlineKeyboardButton(
                'Изменить\nОткуда Родом', callback_data='change_homeland')
            button4 = types.InlineKeyboardButton('Изменить О себе',
                                                 callback_data='change_desc')
            keyboard.row(button1, button2)
            keyboard.row(button3, button4)
            bot.edit_message_reply_markup(chat_id=call.message.chat.id,
                                          message_id=call.message.message_id,
                                          reply_markup=keyboard)
        elif call.data == 'change_name':
            bot.send_message(
                call.message.chat.id,
                'Хмм. Надеюсь ты в розыск не попал) Введи свое новое имя')
            u.change_st = 1
            u.last_mess_id = call.message.message_id
        elif call.data == 'change_age':
            bot.send_message(
                call.message.chat.id,
                'У кого-то день рождение? Введи свой новый возраст\n(целое число)'
            )
            u.change_st = 2
            u.last_mess_id = call.message.message_id
        elif call.data == 'change_homeland':
            bot.send_message(
                call.message.chat.id,
                'Введи свое новое место откуда ты родом\n(регион, город)')
            u.change_st = 3
            u.last_mess_id = call.message.message_id
        elif call.data == 'change_desc':
            bot.send_message(
                call.message.chat.id,
                'Появились новые интересы? Буду рад о них услышать')
            u.change_st = 4
            u.last_mess_id = call.message.message_id