@AruxGame

TelegramBOT Вызов по кнопке?

Почему происходит ошибка?

Код:
@bot.message_handler(commands=['call'])
def call(message):
	markup = types.InlineKeyboardMarkup()
	call = types.InlineKeyboardButton(text="Позвонить!", url="tel:+1234567890")  # Ошибка в этой строке!

	markup.add(call)

	bot.send_message(message.chat.id, "Звонок...", reply_markup=markup)


Вот лог из консоли:

2020-08-23 22:00:12,463 (util.py:68 WorkerThread2) ERROR - TeleBot: "ApiException occurred, args=('A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:\n[b\'{"ok":false,"error_code":400,"description":"Bad Request: wrong HTTP URL"}\']',)
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\util.py", line 62, in run
    task(*args, **kwargs)
  File "C:\Users\User\Desktop\Bots\bot.py", line 33, in start
    bot.send_message(message.chat.id, "Привет! Нажми на кнопку и перейди в поисковик.", reply_markup=markup)
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\__init__.py", line 641, in send_message
    reply_markup, parse_mode, disable_notification, timeout))
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\apihelper.py", line 166, in send_message
    return _make_request(token, method_url, params=payload, method='post')
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\apihelper.py", line 69, in _make_request
    return _check_result(method_name, result)['result']
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\apihelper.py", line 88, in _check_result
    raise ApiException(msg, method_name, result)
telebot.apihelper.ApiException: A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: wrong HTTP URL"}']
"
2020-08-23 22:00:12,469 (__init__.py:455 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: wrong HTTP URL"}']"
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
SoreMix
@SoreMix
yellow
Либо tg:// протокол, либо http

В качестве альтернативы можете передать вот такой текст в сообщение
bot.send_message(message.chat.id, "[Позвонить](tel:+89000000000)", parse_mode='Markdown')
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@kirillinyakin
В самой же ошибке написано, что wrong http url, ты пытаешься в url вписать номер телефона, а надо URL
Ответ написан
hottabxp
@hottabxp Куратор тега Python
Эксперт по BeautifulSoup(но это не точно!)
В документациях Telegram Api и pyTelegramBotAPI ничего подобного не нашел. В гугле по данному вопросу нашел только одно упоминание - Кнопка с номером телефона Telegram

Кому лень переходить, то перескажу - там придумали хак. Создать у себя на сервере *.php файл с содержимым header("Location: tel:787770099"); и в InlineKeyboardButton в параметр url передать ссылку на данный файл. Разумеется, web-сервер должен быть запущен.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
Кенарий Санкт-Петербург
от 120 000 до 250 000 ₽
23 сент. 2020, в 20:17
100000 руб./за проект
23 сент. 2020, в 20:15
12000 руб./за проект
23 сент. 2020, в 20:14
1000 руб./за проект