Телеграм бот не работает на сервере

После переноса бота на новый сервер я столкнулся со следующей проблемой. Я использую webhook для получения обновлений, но теперь бот не получает их с серверов Telegram. Я попытался отправить запрос POST с помощью curl с удаленного сервера, и бот обработал его обычным способом. Я проверил webhook с помощью getWebhookInfo, и он вернул объект с непустым URL-адресом и pending_update_count равным 74 без ошибок. Думаю, это означает, что серверы телеграмм по какой-то причине не могут отправить запрос POST на мой хост.

ОС моего сервера — Arch Linux.

Я использую pyTelegramBotAP.

CONFIG = ConfigParser() CONFIG.read(os.path.join(‘data’, ‘config.ini’)) # webhook url URL_BASE = «https://<>:<>».format(CONFIG[‘server’][‘ip’], CONFIG.getint(‘server’, ‘port’)) URL_PATH = «/<>/».format(CONFIG[‘telegram bot’][‘token’]) BOT = telebot.TeleBot(CONFIG[‘telegram bot’][‘token’]) # server that will listen for new messages APP = web.Application() URL = URL_BASE + URL_PATH BOT.set_webhook(url=URL, certificate=open(CONFIG[‘ssl’][‘certificate’], ‘rb’)) # Build ssl context CONTEXT = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) CONTEXT.load_cert_chain(CONFIG[‘ssl’][‘certificate’], CONFIG[‘ssl’][‘private key’]) # Start aiohttp server web.run_app( APP, host=CONFIG[‘server’][‘listen’], port=CONFIG[‘server’][‘port’], ssl_context=CONTEXT, )

Источник: reddeveloper.ru

КАК ЗАПУСТИТЬ TELEGRAM БОТА ИЛИ ПАРСЕР НА СЕРВЕРЕ

Почему телеграм бот на локалке работает, а на сервере не работает?

Написал телеграм бота на telegraf.js, на локалке протестил с помощью ngrok, все отлично работает. Купил VPS, поднял сервак на nginx + нода настроил сертификаты, запускаю. НО! getWebhookInfo выдает ошибку: Wrong response from the webhook: 502 Bad Gateway.
Проверил error.log:
Error: upstream prematurely closed connection while reading response header from upstream
Нода преждевременно закрывает соединение. Перелопатил все что мог, но ошибка та же.

server < listen 443 ssl; ssl_certificate /path/to/cert.crt; ssl_certificate_key /path/to/cert_key.key; server_name infocardbot.dreamcode.kz; location /hook < proxy_connect_timeout 90s; proxy_send_timeout 120s; proxy_read_timeout 120s; proxy_pass http://127.0.0.1:4000; proxy_http_version 1.1; proxy_set_header Host $host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; >>

Еще по теме:  Заспамить обидчика звонками через Телеграм

Думаю, код самого бота не обязателен, так как на локалке работает, значит не в нем дело.
Не прошу готового ответа, дайте пожалуйста хоть направление.
Заранее спасибо.

  • Вопрос задан более двух лет назад
  • 1049 просмотров

8 комментариев

Средний 8 комментариев

Источник: qna.habr.com

КАК СОЗДАТЬ И ЗАЛИТЬ НА СЕРВЕР ТЕЛЕГРАМ-БОТА НА PYTHON ЗА 15 МИНУТ?

Бот Telegram — методы API не работают на сервере

Я пытаюсь создать Telegram Bot. я следую это видео . мои коды работают в localhost, но когда я помещаю их на сервер, результат будет другим. этот код просто позвони getUpdates метод Telegram api.

Результат локального хоста:

string(616) «<«ok»:true,»result»:[<«update_id»:35****293, «message»:<«message_id»:1,»from»:<«id»:95*****4,»first_name»:»Mahmood»,»last_name»:»Kohansal»,»username»:»mahmoodkohansal»>,»chat»:<«id»:95*****4,»first_name»:»Mahmood»,»last_name»:»Kohansal»,»username»:»mahmoodkohansal»,»type»:»private»>,»date»:1448737853,»text»:»/start»>>,,»chat»:,»date»:1448737855,»text»:»1″>>]>»

и результат сервера:

bool(false)

Извините за мой плохой английский.

Решение

Если ваш код работает на localhost, первым предположением будет то, что вашему серверу не удалось установить соединение с бот-API.
Возможно, вам следует поместить это в утверждение if.

$token = «your token»; $website = «https://api.telegram.org/bot».$token; if($updates = file_get_contents($website.»/getUpdates»)) < echo «Connection made»; >else

Также вы можете убедиться, что webHook не установлен? Метод getUpdates не возвращает результаты, если установлен webHook.

Другие решения

PHP file_get_contents метод был проблемой. Я нашел ту же проблему с этим методом Вот , и использовать решение, чтобы решить мою проблему.

Источник: web-answers.ru

Рейтинг
( Пока оценок нет )
Загрузка ...