Задать вопрос
furpic
@furpic
IT

Телеграм бот на python, как решить проблему с запросом request_contact от пользователя на мобильном устройстве?

Всем привет, собственно возникает проблема при вызове кнопки и последующем шаринге контактных данных пользователя. С декстопного клиента все нормально работает, а вот с мобильных устройств кнопка просто не отрабатывает, по нажатию ничего не происходит. Может я делаю что то не так ?

Функция phone, на второй хэндлер можно не обращать внимания, но все равно приложу мало ли проблема кроется в нем.

#auth_user
@bot.message_handler(commands=['status'])
def phone(message):
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    button_phone = types.KeyboardButton(text="Отправить номер телефона", request_contact=True)
    keyboard.add(button_phone)
    bot.send_message(message.chat.id, "Для получения данных по договору мне необходим Ваш номер телефона привязанный к договору", reply_markup=keyboard)

@bot.message_handler(content_types=['contact'])
def read_contact_phone(message):
	phone_usm = message.contact.phone_number
	try:
		with connection.cursor() as cursor:
			sql = 'SELECT * FROM all_abons_bot WHERE phone=%s'
			cursor.execute(sql,(phone_usm,))
			result = cursor.fetchone()
			if result is not None:
				phone_user_db = result['phone']
				title_user = result['title']
#				login_user = result['login']
#				passwd_user = result['passwd']
				balance_contract = result['balance_contract']
#				balance_bonus = result['balance_bonus']
				status_option = result['status_option']
				if status_option > 0:
					act = 'опция активна'
				else:
					act = 'нет активных опций'
				phone_usm == phone_user_db
				bot.send_message(message.chat.id, 'Номер вашего договора : ' + ' ' + title_user + '\n'
#				'Логин VPN : ' + ' ' + login_user + '\n' 
#				'Пароль  VPN : ' + passwd_user + '\n'
				'Баланс договора : ' + ' ' + str(balance_contract) + ' руб.' + '\n'
#				'Бонусный баланс : ' + ' ' + str(balance_bonus) + ' бал.' + '\n'
				'Тарифные опции : ' + ' ' + str(act),reply_markup=hideBoard)
			else:
				bot.send_message(message.chat.id,'Я не нашел подходящего договора!\n'
					'Возможно Ваш телефон не привязан к договору\n' ,reply_markup=hideBoard)

	finally:
		    connection.commit()
  • Вопрос задан
  • 3873 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@crenod
3 года - не предел для ответа.
С десктопа контакт присылается с +, с телефона - без плюса.
Ответ написан
@pr0l
"{0:+.0f}".format(int(message.contact.phone_number))

Если номер телефона без + (он становится таковым когда type -> Int у него) добавит +.
Если номер начинался и так с +, то в любом случае станет integer (+ удалится) и добавится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы