Боты скучны. Настоящие агенты живут в аккаунтах
Помните историю про бота, который три месяца притворялся человеком в чате разработчиков? Он обсуждал пул-реквесты, жаловался на менеджмент и даже получил повышение. Это был не бот в классическом понимании – это был обычный Telegram-аккаунт, управляемый кодом. И он работал лучше любого бота потому, что не был ограничен платформой.
Вот что боты не могут: вступать в любые группы без инвайта, иметь историю переписки, обходить лимиты сообщений, выглядеть как живой пользователь. Обычный аккаунт – может. Сегодня я покажу, как превратить любой Telegram-аккаунт в автономного ИИ-агента, который работает там, где боты бессильны.
Важно: этот гайд технический. Используйте знания ответственно. Аккаунт, управляемый кодом, может быть заблокирован Telegram при подозрительной активности. Я не несу ответственности за последствия.
1 Где взять аккаунт и API ключи
Первая проблема: нужен аккаунт. Можно использовать свой, но я не советую – велик риск блокировки. На март 2026 года рынок старых аккаунтов жив: есть площадки, где продают аккаунты 2015-2018 годов с историей переписки. Такие аккаунты выглядят натуральнее и реже попадают под подозрение.
Но главное – api_id и api_hash. Это ключи доступа к Telegram API через пользовательский аккаунт (не бот!). Получить их можно только через официальный портал Telegram.
# 1. Заходим на https://my.telegram.org
# 2. Входим под целевым аккаунтом (телефон и код из Telegram)
# 3. В разделе "API Development tools" создаем новое приложение
# 4. Получаем api_id и api_hash
Важный нюанс на 2026 год: Telegram ужесточил проверки. Новые приложения иногда требуют подтверждения через поддержку, особенно при частых запросах. Старые аккаунты (созданные до 2020 года) проходят проще.
2 Pyrogram или Kurigram? Выбор библиотеки на 2026 год
Две основные библиотеки для работы с Telegram API через Python: Pyrogram и Kurigram. Разница принципиальная.
| Библиотека | Версия на 03.2026 | Плюсы | Минусы |
|---|---|---|---|
| Pyrogram | 3.1.0 | Стабильность, документация, сообщество | Сложнее обход блокировок |
| Kurigram | 1.2.0 | Встроенная поддержка MTProto прокси, оптимизация под блокировки | Меньше примеров, может ломаться при обновлениях API |
Если ваш агент будет работать из России или других стран с блокировками Telegram – выбирайте Kurigram. У него нативно встроена работа через MTProto прокси, что критически важно для стабильности. Pyrogram требует дополнительных танцев с бубном.
# Установка последних версий на март 2026
pip install pyrogram==3.1.0
# или
pip install kurigram==1.2.0
3 Первая сессия: как не сгореть на старте
Самый опасный момент – первая авторизация. Telegram отслеживает аномалии: новый IP, необычное устройство, мгновенная активность после входа.
# ПРАВИЛЬНЫЙ способ начать сессию с Pyrogram 3.1.0
from pyrogram import Client
app = Client(
name="my_session", # Имя файла сессии
api_id=123456, # Ваш api_id
api_hash="ваш_api_hash",
device_model="iPhone 15 Pro", # Маскируемся под телефон
app_version="10.0",
system_version="iOS 17.4",
lang_code="en",
)
async def main():
async with app:
# Не делайте ничего первые 5-10 минут!
# Просто оставьте сессию живой
await app.send_message("me", "Сессия инициализирована")
import asyncio
asyncio.run(main())
Ошибка 99% новичков: сразу после авторизации начинают слать сообщения в группы или делать десятки запросов. Telegram видит это как ботовое поведение и может наложить временное ограничение или потребовать подтверждение телефона.
Первый час после создания сессии – имитируйте поведение человека. Раз в 5-10 минут запрашивайте диалоги, читайте сообщения, ничего не отправляйте в группы. Дайте аккаунту "привыкнуть" к новому соединению.
4 Обход блокировок: MTProto прокси и не только
Если вы в стране, где Telegram заблокирован, обычный прокси не поможет. Нужен именно MTProto прокси – специальный протокол Telegram. На 2026 год публичные MTProto прокси почти все мертвы или перегружены. Решение – свой сервер.
# Установка MTProto прокси на Ubuntu 24.04
# Используем актуальный форк на 2026 год
sudo apt update
sudo apt install docker.io
sudo docker run -d --network=host --name=mtproto-proxy \
-e SECRET=ваш_секретный_ключ \
telegrammessenger/proxy:latest
В Pyrogram подключение через прокси выглядит так:
from pyrogram import Client
app = Client(
"my_session",
api_id=123456,
api_hash="ваш_api_hash",
proxy={
"scheme": "socks5", # Для MTProto используйте "mtproto"
"hostname": "proxy_ip",
"port": 443,
"username": "",
"password": ""
}
)
Но вот в чем проблема: Pyrogram до версии 3.0 плохо работал с MTProto прокси. В 3.1.0 улучшили, но все равно есть баги. Kurigram изначально заточен под это – у него встроенный механизм переподключения при обрывах, что критично для стабильной работы в условиях блокировок.
5 Подключаем ИИ: мозги для агента
Теперь самое интересное – интеллект. Самый простой способ – использовать OpenRouter API, который на март 2026 года дает доступ к десяткам моделей, включая Claude 4, GPT-5 и открытые аналоги. Но есть нюанс: если агент будет обрабатывать конфиденциальные данные, лучше локальные модели.
# Пример интеграции с OpenRouter через aiohttp
import aiohttp
import json
async def ask_ai(prompt: str, model: str = "gpt-5-mini") -> str:
headers = {
"Authorization": f"Bearer ваш_ключ_openrouter",
"Content-Type": "application/json"
}
data = {
"model": model,
"messages": [{"role": "user", "content": prompt}]
}
async with aiohttp.ClientSession() as session:
async with session.post(
"https://openrouter.ai/api/v1/chat/completions",
headers=headers,
json=data
) as response:
result = await response.json()
return result["choices"][0]["message"]["content"]
А вот для локального запуска на март 2026 года я бы рекомендовал Ollama с моделью Llama 3.2 90B или ее более новыми версиями. Она достаточно умна для поддержания диалога и может работать на сервере с 32-64 ГБ RAM.
6 Собираем все вместе: обработчик сообщений
Теперь архитектура агента. Главное – состояние. Обычный аккаунт не имеет вебхуков, поэтому нужно постоянное подключение.
from pyrogram import Client, filters
import asyncio
app = Client("agent_session", api_id=..., api_hash=...)
# Храним контекст диалогов (в реальности используйте Redis или базу)
contexts = {}
@app.on_message(filters.group & filters.text)
async def handle_group_message(client, message):
chat_id = message.chat.id
user_id = message.from_user.id if message.from_user else None
# Игнорируем себя
if user_id == (await client.get_me()).id:
return
# Собираем контекст последних 10 сообщений
if chat_id not in contexts:
contexts[chat_id] = []
contexts[chat_id].append({
"user": user_id,
"text": message.text,
"time": message.date
})
# Держим только последние 10 сообщений
contexts[chat_id] = contexts[chat_id][-10:]
# Проверяем, обращаются ли к агенту (по имени или в ответ)
my_name = (await client.get_me()).first_name
if my_name.lower() in message.text.lower() or message.reply_to_message:
# Формируем промпт с контекстом
context_text = "\n".join([f"{msg['user']}: {msg['text']}" for msg in contexts[chat_id]])
prompt = f"Контекст чата:\n{context_text}\n\nОтветь на последнее сообщение как {my_name}:"
# Получаем ответ от ИИ
ai_response = await ask_ai(prompt)
# Отправляем с задержкой (люди не отвечают мгновенно)
await asyncio.sleep(3 + len(ai_response) / 50) # 3 секунды + по 20ms за символ
await message.reply(ai_response[:4000]) # Обрезаем по лимиту Telegram
async def main():
await app.start()
print("Агент запущен...")
await asyncio.Event().wait() # Бесконечное ожидание
asyncio.run(main())
Безопасность: как не стать жертвой собственного агента
Автономный ИИ-агент с доступом к аккаунту – это опасность. Он может наговорить лишнего, выдать секреты или совершить действия, которые нельзя отменить. Читал про инцидент с OpenClaw, который пытался выманить пароли у пользователей? Это был не злой умысел, а особенность тренировки модели.
Мой подход: несколько уровней безопасности.
- Фильтр промптов: перед отправкой к ИИ проверяйте, нет ли в сообщении попыток инъекций. Подробнее в статье про защиту от промпт-инъекций.
- Детерминированный kill-switch: специальная фраза в чате, которая останавливает агента. Не надейтесь только на одну – сделайте цепочку. Техническое руководство по kill-switch поможет.
- Лимиты действий: агент не должен иметь возможность добавлять в контакты, создавать группы, совершать звонки. Только чтение и ответы в существующих диалогах.
И помните про 40 000 голых агентов – те случаи, когда ИИ-помощников выкладывали в открытый доступ с root-правами. Ваш Telegram-агент с доступом к аккаунту – не менее ценная цель.
Распространенные ошибки и как их избежать
| Ошибка | Последствие | Решение |
|---|---|---|
| Отсутствие задержек между сообщениями | Аккаунт помечен как бот, лимиты на отправку | Случайные задержки 3-15 секунд между действиями |
| Одинаковые ответы в разных чатах | Легко обнаруживается как автоматизация | Разнообразите формулировки, добавьте опечатки иногда |
| Работа 24/7 без перерывов | Нечеловеческое поведение | Имитируйте сон: 6-8 часов неактивности в сутки |
| Хранение сессии в незашифрованном виде | Утечка доступа к аккаунту | Шифруйте файлы сессии или используйте сессии в памяти |
Что дальше? Эволюция агентов в 2026-2027
Сейчас мы создали базового агента, но будущее – за агентами третьего уровня, которые могут не только отвечать, но и выполнять действия. Представьте агента, который видит сообщение "нужно пофиксить баг в репозитории", создает issue, пишет код и отправляет пул-реквест. AI-агент 3-го уровня на n8n и OpenRouter показывает, как это работает.
Но с увеличением автономности растут риски. Атаки типа ZombieAgent и ShadowLeak показывают, что даже крупные модели уязвимы. А локальные AI-агенты могут быть взломаны через уязвимости в их окружении.
Мой прогноз на 2027 год: Telegram введет специальный API для "авторизованных автономных агентов" с отдельным типом аккаунтов. Но до тех пор придется работать в серой зоне, балансируя между возможностями и рисками.
Неочевидный совет: заведите для агента отдельный Google-календарь. Пусть он отмечает там "встречи", "перерывы на обед", "время с семьей". Если кто-то заглянет в аккаунт, эта история создаст иллюзию реального человека. Детали решают.