Perplexity API+Telegram Bot
Timur Gilmanov
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 токенов, можно сделать бота более или менее болтливым
Можно добавить команды админа, меню с часто задаваемыми вопросами, автоудаление нецензурных сообщений и т.д.
Для модератора добавь проверку на слова из чёрного списка и реакции на нарушения.
Для менеджера — прописывай реакции на частые фразы типа “Как оплатить?”, “Где инструкция?” или пусть бот сам отвечает, используя ИИ.
В реальном чате
Бот будет отвечать в личке и в группах. В чатах можно дать ему права администратора — тогда он сможет удалять сообщения, банить и выдавать предупреждения. А если оставить обычным участником, он просто отвечает и помогает людям.
Проверь токены, не храни их в открытом виде. Удачи в создании своего полезного ИИ-ассистента!