Добавить в корзинуПозвонить
Найти в Дзене

Продолжение. Подробное руководство: Bot-to-Bot Communication в Telegram на Python (Bot API 10.0)

Начало:
1. Подготовка ботов
2. Включи Bot-to-Bot режим (обязательно!)
Без этого боты не смогут отправлять/получать сообщения друг другу.

Начало:

1. Подготовка ботов

  1. Открой @BotFather
  2. /newbot → создай двух (или больше) ботов.
  3. Примеры имён: @researcher_bot, @analyst_bot
  4. Сохрани токены обоих ботов.

2. Включи Bot-to-Bot режим (обязательно!)

  1. Напиши @BotFather → /mybots
  2. Выбери бота → Bot Settings (откроется Mini App)
  3. Найди Bot-to-Bot Communication → включи On
  4. Повтори для каждого бота, который будет общаться.

Без этого боты не смогут отправлять/получать сообщения друг другу.

3. Простой пример на aiogram 3.x (рекомендуется)

bash

pip install aiogram[fast] python-dotenv

Структура проекта:

bot_to_bot/

├── .env

├── main_researcher.py

├── main_analyst.py

└── config.py

.env

env

RESEARCHER_TOKEN=123456:ABC...

ANALYST_TOKEN=654321:XYZ...

RESEARCHER_USERNAME=@researcher_bot

ANALYST_USERNAME=@analyst_bot

config.py

python

from dotenv import load_dotenv

import os

load_dotenv()

RESEARCHER_TOKEN = os.getenv("RESEARCHER_TOKEN")

ANALYST_TOKEN = os.getenv("ANALYST_TOKEN")

RESEARCHER_USERNAME = os.getenv("RESEARCHER_USERNAME")

ANALYST_USERNAME = os.getenv("ANALYST_USERNAME")

Бот 1 — Researcher (исследователь)

python

from aiogram import Bot, Dispatcher, types

from aiogram.filters import Command

import asyncio

import json

from config import RESEARCHER_TOKEN, ANALYST_USERNAME

bot = Bot(token=RESEARCHER_TOKEN, parse_mode="HTML")

dp = Dispatcher()

@dp.message(Command("start"))

async def start(message: types.Message):

await message.answer("👋 Я Researcher. Запускаю поиск...")

@dp.message()

async def handle_message(message: types.Message):

if message.from_user.is_bot: # Сообщение от другого бота

print(f"Получил от бота: {message.text}")

# Можно обработать данные

# Пример: отправляем задание аналитику

if "анализируй" in message.text.lower():

data = {

"task": "Анализ тренда",

"query": message.text,

"timestamp": str(asyncio.get_event_loop().time())

}

await bot.send_message(

chat_id=ANALYST_USERNAME,

text=f"📊 Новое задание:\n{json.dumps(data, ensure_ascii=False, indent=2)}"

)

await message.answer("✅ Задание отправлено аналитику!")

async def main():

print("Researcher бот запущен...")

await dp.start_polling(bot)

if __name__ == "__main__":

asyncio.run(main())

Бот 2 — Analyst (аналитик)

python

from aiogram import Bot, Dispatcher, types

from aiogram.filters import Command

import asyncio

import json

from config import ANALYST_TOKEN, RESEARCHER_USERNAME

bot = Bot(token=ANALYST_TOKEN, parse_mode="HTML")

dp = Dispatcher()

@dp.message()

async def handle_all(message: types.Message):

if message.from_user.is_bot: # Сообщение пришло от другого бота

try:

data = json.loads(message.text.split(":\n", 1)[-1])

print("Получил данные от Researcher:", data)

# Симулируем анализ

result = f"✅ Анализ завершён!\nТренд: {data['query']}\nРекомендация: Запустить контент-план"

await bot.send_message(

chat_id=RESEARCHER_USERNAME,

text=result,

reply_to_message_id=message.message_id

)

except:

await bot.send_message(

chat_id=RESEARCHER_USERNAME,

text="Получил сообщение, но не смог распарсить JSON"

)

async def main():

print("Analyst бот запущен...")

await dp.start_polling(bot)

if __name__ == "__main__":

asyncio.run(main())

4. Как запустить

Открой два терминала и запусти оба бота одновременно:

bash

python main_researcher.py

python main_analyst.py

Напиши любому из ботов: анализируй ИИ в 2026 — и посмотри, как они общаются между собой.

Важные моменты и лучшие практики

  • Защита от циклов — всегда проверяй message.from_user.is_bot и добавляй условия.
  • Rate limits — Telegram строго лимитирует сообщения (30 в секунду разным чатам).
  • JSON — удобный формат для передачи структурированных данных.
  • reply_to_message_id — помогает создавать понятные цепочки.
  • Long polling / Webhook — оба работают. Для продакшена лучше webhook.
  • Можно использовать LangGraph, CrewAI или AutoGen внутри обработчиков.

Начало:

#TelegramBots #BotToBot #aiogram #АвтономныеАгенты #PythonAI