раздел 05
Шпаргалка
Установка
pip install telethon "python-socks[asyncio]"
Сниппеты
Подключение:
from telethon import TelegramClient
client = TelegramClient("my_session", api_id, api_hash)
Прочитать последние сообщения:
async for message in client.iter_messages("@channel", limit=20):
print(message.text)
Отправить:
await client.send_message("@username", "текст")
await client.send_message("me", "заметка себе")
Скачать медиа:
async for message in client.iter_messages("@channel", limit=50):
if message.media:
await message.download_media("downloads/")
Слушать новые сообщения:
from telethon import events
@client.on(events.NewMessage(chats="@channel"))
async def handler(event):
print(event.message.text)
with client:
client.run_until_disconnected()
Обработать FloodWait:
import asyncio
from telethon import errors
try:
await client.send_message("@username", "текст")
except errors.FloodWaitError as e:
await asyncio.sleep(e.seconds + 1)
Подключение через прокси:
proxy = {"proxy_type": "socks5", "addr": "PROXY_HOST", "port": 1080}
client = TelegramClient("my_session", api_id, api_hash, proxy=proxy)
Чек-лист безопасного использования
*.sessionв.gitignore, файл сессии не коммитить и не пересылать (это доступ к аккаунту).api_idиapi_hashдержать в секрете (переменные окружения или.env).- Делать паузы между действиями, не слать сообщения пачками, держать человеческий темп.
- Ловить
FloodWaitи ждатьe.seconds, а не пробивать лимит повторами. - Не писать незнакомым людям массово - это спам и повод для бана.
- Одна сессия - одно место запуска, не дублировать.
- Из России на заблокированном хостинге - подключение через прокси.
- Сначала тест на «Избранном» (
"me") и тестовом чате, потом на живых чатах. - Скрейпинг чужих данных - оценивать риски и правила заранее.
Глоссарий
| Термин | Что это |
|---|---|
| MTProto | Родной протокол Telegram, на нём работают официальные приложения и Telethon. |
api_id / api_hash | Ключи приложения с my.telegram.org, нужны для входа. |
Сессия (.session) | Файл с сохранённым входом в аккаунт. Секрет, равный доступу к аккаунту. |
| Userbot | Автоматизация под обычным пользовательским аккаунтом (а не под ботом). |
| User account | Обычный пользовательский аккаунт, вход по номеру телефона. |
| Событие (event) | Новое сообщение или действие, на которое реагирует обработчик (events.NewMessage). |
FloodWait | Ответ Telegram «слишком часто, подожди N секунд». Ждать столько, сколько просят. |
Куда дальше
- Свой Telegram-агент на Telethon - собрать полезную автоматизацию поверх аккаунта.
- Как снизить риск бана в Telegram - лимиты, темп и безопасное поведение.
- Телеграм-боты - когда вместо user-аккаунта лучше взять бота.
- Python-библиотеки - что ещё ставится через
pip. - Проксирование - доступ к заблокированным сервисам.