@PrytexY
Нюхаю бебру

Не работает telegram бот на python?

Сделал базового бота Telegram на Python.
import telebot

bot = telebot.TeleBot("1101114834:AAHYPyEyL7QicW8OQuKsiDrN28gBBAmcCJg")


@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
	bot.reply_to(message, "Howdy, how are you doing?")
bot.polling()

Вылезает ошибка:
Exception has occurred: ConnectTimeout
HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot1101114834:AAHYPyEyL7QicW8OQuKsiDrN28gBBAmcCJg/getUpdates?offset=1&timeout=20 (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x000001F60A518748>, 'Connection to api.telegram.org timed out. (connect timeout=3.5)'))

Если что я живу в Росии ия знаб что могут быть проблемы с vpn на я не зна ка их решать...
Я использую Python 3. 7 , Windows 10 pro и PyTelegramBotApi (https://pypi.org/project/pyTelegramBotAPI/0.3.0/)
5e84d506d21ab400910024.png
  • Вопрос задан
  • 3710 просмотров
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Для себя я решил эту проблему забавным и простым образом.
У меня есть VDS для хостинга сайта. С неё телеграм доступен и не блокируется. Я превратил этот сервер в собственный прокси для апи телеграма простым конфигом для nginx:
server {
    listen tg.my_own_domain.net:8079;
    server_name tg.my_own_domain.net;
    access_log /var/log/nginx/tg.my_own_domain.net-access.log;
    error_log /var/log/nginx/tg.my_own_domain.net-error.log;
    location / {
	proxy_set_header X-Forwarded-Host $host;
	proxy_set_header X-Forwarded-Server $host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_pass https://api.telegram.org/;
	client_max_body_size 100M;
    }
}

Очевидно, что моё решение именно вам скорее всего не подойдёт, но кому-то может оказаться полезным, ведь для его реализации достаточно иметь лишь свою VDS вне зоны блокировки, свой домен (хотя не обязательно) и больше ничего. Nginx у вас там уже скорее всего стоит, но и поставить его не долго.

Для желающих более правильно решить этот вопрос могу посоветовать найти на docker hub готовый образ с телеграммовским прокси или вообще универсальным прокси.

Лично вам, скорее всего, придётся пользоваться какими-то публичными готовыми прокси-серверами, а в конфигурации бота указывать их или список их для подключения.
Этот вариант я сейчас искать и пробовать для вас времени, к сожалению не имею. Надеюсь кто-то подхватит и добавит свой ответ.

Кстати, чтобы вообще ничего не менять в коде бота и его конфигурации, можно на машине, где будет работать бот прописать в hosts ip зеркала телеграммовского API на домен api.telegram.org.

Чужим непроверенным зеркалам API я бы не особо доверял, кстати.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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