Коротко — причин несколько: проблема с сетью/провайдером (блокировка MTProto), неверные данные/время, ошибки в окружении или некорректная конфигурация Telethon. Ниже — чеклист диагностики и несколько простых обходов (с примерами кода).
1) Сначала посмотрите точную ошибку и включите логирование
- В коде добавьте:
import logging
logging.basicConfig(level=logging.DEBUG)
— это покажет, на каком этапе падает подключение. Вставьте сюда (или скопируйте) текст ошибки — по ней легче понять причину.
2) Быстрая сетевая диагностика
- Попробуйте пропинговать / подключиться к Telegram DC:
- ping 149.154.167.51
- traceroute 149.154.167.51
- telnet 149.154.167.51 443 (или openssl s_client -connect 149.154.167.51:443)
Если не подключается на 443 — скорее всего блокировка на уровне провайдера/хостинга или брандмауэра.
3) Проверьте системное время
- Неправильное время/часовой пояс ломает TLS/MTProto. Синхронизируйте time (ntp).
4) Используйте прокси (SOCKS5 / HTTP)
- Установите PySocks:
pip install PySocks
- Пример Telethon + SOCKS5:
import socks
from telethon import TelegramClient
api_id = 123456
api_hash = '0123456789abcdef...'
proxy = (socks.SOCKS5, '1.2.3.4', 1080, True) # rdns=True; добавить user/pass если нужно
client = TelegramClient('session_name', api_id, api_hash, proxy=proxy)
client.start(bot_token='ВАШ_BOT_TOKEN')
print('OK')
- Для HTTP прокси: proxy = (socks.HTTP, 'proxy.host', 3128)
5) Попробуйте другое подключение Telethon (иногда помогает)
from telethon.network.connection import ConnectionTcpAbridged
client = TelegramClient('sess', api_id, api_hash, connection=ConnectionTcpAbridged, proxy=proxy)
6) MTProto прокси (если есть) — альтернативный вариант
- Если у вас есть MTProto-прокси (mtproxy), подключитесь через него — это решает блокировку в ряде стран. Telethon/библиотеки поддерживают такие прокси, но реализация зависит от версии — напишите, если нужен пример для вашей версии Telethon.
7) Если на VPS/хостинге — провайдер мог блокировать MTProto
- Попробуйте запустить тот же скрипт на домашнем компьютере/мобильном интернете. Если там работает — проблема у хостинга. В этом случае: сменить провайдера, включить SOCKS/HTTP-прокси или использовать VPN/mtproxy на сервере.
8) Временный обход: используйте Bot API (HTTPS)
- Если Telethon (MTProto) не подключается, для ботов можно временно перейти на Bot API (requests, python-telegram-bot). Bot API работает через api.telegram.org (HTTPS) и часто доступен, даже если MTProto заблокирован.
9) Версия Telethon и окружение
- Убедитесь, что Telethon актуален:
pip install -U telethon
- Проверьте Python, виртуальное окружение, отсутствие конфликтующих библиотек.
10) Что прислать мне, чтобы помочь дальше
- Полный вывод логов/ошибок (DEBUG)
- Код запуска (как вы создаёте клиент и стартуете)
- Где запускаете (локально / VPS / облако / Windows / Linux)
- Telethon и Python версии
Если хотите, пришлите ошибку (лог DEBUG) — по ней скажу, где именно «застревает» подключение и дам точный пример обхода.