Perplexity API+Telegram Bot

Timur Gilmanov

telegrampython

438 Words Ты потратишь: 1 Minute, 59 Seconds

2025-10-18 04:20 +0000


Создать ИИ-ассистента в Telegram — вполне реально даже для новичка, если немного разобраться. Такой бот может быть не только простым помощником, но и отвечать на типовые вопросы, принимать команды и даже следить за порядком, если поставить функции модератора.

Да, для этого обязательно понадобится Perplexity Pro, которая стоит 20$, но на некоторых площадках можно купить подписку на год за ~500 рублей, классный инструмент даже сам по себе.

Теперь заходишь в Telegram и пишешь @BotFather. Там всё просто — регистрируешь нового бота, придумываешь имя, получаешь уникальный токен.

Получение API-ключа Perplexity

Идёшь на сайт Perplexity.ai, используя свою учётную запись Pro. Ежемесячно ты будешь получать несуммируемые $5 на пользование их API — отличная фишка, хватит для сотен запросов, если бот не сильно «болтливый», но это регулируется.

Подготовка окружения и установка библиотек

Дальше нужен Python (я использовал 3.12), и две основные библиотеки:
aiogram — для работы с Telegram.
httpx — для запросов к третьим сервисам типа Perplexity.

Далее подставляешь свои токены в этот код

from aiogram import Bot, Dispatcher, types
from aiogram.types import Message
import asyncio
import logging
import httpx

API_TOKEN = "API TOKEN TG BOT"
PERPLEXITY_API_KEY = "API TOKEN PERPLEXITY"
PERPLEXITY_API_URL = "https://api.perplexity.ai/chat/completions"

bot = Bot(token=API_TOKEN)
dp = Dispatcher()
logging.basicConfig(level=logging.INFO)

async def ask_perplexity(question: str) -> str:
    headers = {
        "Authorization": f"Bearer {PERPLEXITY_API_KEY}",
        "Content-Type": "application/json"
    }
    json_data = {
        "model": "sonar",
        "messages": [
            {
                "role": "system",
                "content": (
                    "Отвечай без ссылок"
                )
            },
            {"role": "user", "content": question}
        ],
        "max_tokens": 200
    }

    async with httpx.AsyncClient(timeout=60.0) as client:
        resp = await client.post(PERPLEXITY_API_URL, json=json_data, headers=headers)
        if resp.status_code != 200:
            text = await resp.aread()
            logging.error(f"Ошибка API {resp.status_code}: {text.decode(errors='ignore')}")
            return "Возникла ошибка. Попробуйте позже."
        data = resp.json()
        answer = data.get("choices", [{}])[0].get("message", {}).get("content", "Ответ не получен.")
    return answer


@dp.message()
async def ai_assistant_handler(message: Message):
    user_text = message.text
    if not user_text:
        return
    await message.chat.do('typing')
    response = await ask_perplexity(user_text)
    await message.answer(response)

if __name__ == '__main__':
    asyncio.run(dp.start_polling(bot))

Кастомизация
"content": ( "Сюда вносите все данные, учитывая которые модель будет генерировать ответ, например, отвечай доброжелательно, не используй ссылки, и т.д.")
"max_tokens": 200 Максимум в ответе будет 200 токенов, можно сделать бота более или менее болтливым
Можно добавить команды админа, меню с часто задаваемыми вопросами, автоудаление нецензурных сообщений и т.д.

Для модератора добавь проверку на слова из чёрного списка и реакции на нарушения.

Для менеджера — прописывай реакции на частые фразы типа “Как оплатить?”, “Где инструкция?” или пусть бот сам отвечает, используя ИИ.

В реальном чате
Бот будет отвечать в личке и в группах. В чатах можно дать ему права администратора — тогда он сможет удалять сообщения, банить и выдавать предупреждения. А если оставить обычным участником, он просто отвечает и помогает людям. Проверь токены, не храни их в открытом виде. Удачи в создании своего полезного ИИ-ассистента!