Задать вопрос

Как запустить телеграм бота из-за прокси?

Я преподаю в МГТУ им. Баумана и мои студенты пишут на лабораторных телеграм ботов. Из-за блокировки телеграма у нас проблемы. Мы используем среду PyCharm и библиотеку pyTelegramBotAPI. Я пытаюсь запустить бота из-за прокси так:

import telebot
from telebot import apihelper

apihelper.proxy = {'http':'http://x.x.x.x:port'}

TOKEN = ''
bot = telebot.TeleBot(TOKEN)

@bot.message_handler(commands=['start'])

def start(m):
msg = bot.send_message(m.chat.id, 'Привет!' )

bot.polling()


Ответ:
ERROR - TeleBot: "ConnectTimeout occurred, args=(MaxRetryError("HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot547971947:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/getUpdates?offset=1&timeout=20 (Caused by ConnectTimeoutError(<urllib3.connection.VerifiedHTTPSConnection object at 0x02A022F0>, 'Connection to api.telegram.org timed out. (connect timeout=3.5)'))",),)


Прокси рабочий, браузер через прокси получает доступ к api.telegram.org.

Пробовал и Sock5, то же самое.

Мне, в принципе, не важно, каким образом решить эту проблему, главное, чтобы студенты могли запускать ботов. В лабораторном зале нет достуа
  • Вопрос задан
  • 55823 просмотра
Подписаться 8 Сложный 6 комментариев
Решения вопроса 1
Danya_Violet
@Danya_Violet
CTO/CIO
https://github.com/eternnoir/pyTelegramBotAPI#proxy

документация:
apihelper.proxy = {'https':'socks5://userproxy:password@proxy_address:port'}

но если не работает, попробуйте:
apihelper.proxy = {'https':'socks5h://userproxy:password@proxy_address:port'}


Найдено тут
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@psy667
Node.js backend developer
Установите последние версии библиотек gunicorn, PySocks, pyTelegramBotAPI, requests и urllib3

Затем попробуйте использовать другой прокси, например этот
ip = '195.201.137.246'
port = '1080'

apihelper.proxy = {
  'https': 'socks5://{}:{}'.format(ip,port)
}
Ответ написан
@lll000lll
Кучу времени уже потратил на попытку разобраться в аналогичной проблеме. Столкнулся на девятом Дебиане, либы обновлены до последних версий.

Чтобы радикально исключить версию со старыми либами (мало ли, этож Дебиан, версии либ отстают) проверил на свежеустановленном специально для этой цели Убунту-сервере, 17й версии.

Попытки найти ответ на вопрос в гугле, либо соответствующих группах телеграмма, ничего не дали.

В итоге перешел на этот бот https://github.com/python-telegram-bot/python-tele...
Вот о настройке его работы через прокси https://github.com/python-telegram-bot/python-tele...

Причём если прокси с авторизацией, у меня работал только первый способ.

Кстати, этот бот по числу звёзд популярнее telebot, хотя отличия между ними мне не совсем понятны. Telebot использует декораторы, код получается лаконичнее и красивее.
Ответ написан
@vladqwelkj
Извиняюсь за оффтоп, я решил проблему переходом на другую библиотеку- "telepot"
import telepot

basic_auth = ('username', 'password')
SetProxy = telepot.api.set_proxy("http://10.10.10.10:1080", basic_auth)
bot = telepot.Bot('11111111:xxxxxxxxxxxxxxxxxxxxxxxxxxxx')

print(bot.getMe())
Ответ написан
DingoBingo
@DingoBingo
Была такая же ошибка, скачал приложение на пк WindScribe, попробовал с Западной Канады, всё работает. https://windscribe.com/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект