ОБСУЖДЕНИЕ Анонс 

Как создать ИИ бота в Телеграм ПРАВИЛЬНО? [Бесплатный способ]

1 ответов 322
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Как создать ИИ бота абсолютно бесплатно?

- Способ достаточно известен но более в узких кругах, почему то многие о нем забывают или во все не знают.​

Есть отличный сервис как https://openrouter.ai/ (не реклама).

Как раз через него и можно интегрировать кучу бесплатных ИИ в свой проект, будь он даже не телеграм ботом а обычное приложение на телефон/пк.

Опыт из моей истории: я сам создавал ИИ бота в котором был как ИИ с image так и с обычным текстом. Позже продал его компании. Скажу вам как человек который работал с этим сервисом - сервис отличный. Но если же у вас более глобальнее планы на создание своего ИИ проекта - можно купить более умный ИИ по типу Cloude или ChatGPT 6 (Astra).​

Пример кода при интеграции:

Код:
curl https://openrouter.ai \
  -H "Content-Type: application/json" \
  -H "Authorization: ваш апи с OpenRouter" \ <--- API сервиса
  -d '{
    "model": "google/gemini-2.5-flash", <-- #пример модели
    "messages": [
      {"role": "user", "content": "Привет!"}
    ]
  }'

Кто интересуется ИИ тематикой и внедрений в проекты - рекомендую.
Файл который я выложил пример бота в телеграм встроенный с OpenRouter. Просто измените на .py




Мой телеграм: @interminated
Наш чат в телеграм:
тык
 

Вложения

Очень странная заметка.

Боты так или иначе - это код, его можно написать бесплатно, а вот дальше за использование ИИ придётся платить после того, как бесплатные лимиты будут исчерпаны. Либо пользоваться медленными и неактуальными моделями с кучей ошибок.
OpenRouter - это не "сервис с кучей бесплатных ИИ" - это просто агрегатор, который предоставляет единый API для доступа к моделям разных операторов. Сам по себе он не является какой-то нейросетью.
Пример у вас битый - в заголовке нет ключа Bearer
Код:
Authorization: Bearer <OPENROUTER_API_KEY>
, а комментарий сломает синтаксис.

Листинг из вложения можно было добавить в сам текст.
Ну и там тоже есть ошибки - OpenAI SDK должен по этому пути обращаться
Код:
base_url="https://openrouter.ai/api/v1"
И у вас в асинхронном коде aiogram вызывается синхронный вызов, блокирующий обработчик
Код:
ai_client.chat.completions.create

Python:
import asyncio
import os
from aiogram import Bot, Dispatcher, types
from aiogram.filters import CommandStart
from openai import OpenAI

# Замените 'ВАШ_ТГ_ТОКЕН' и 'ВАШ_ОПЕНРОУТЕР_КЛЮЧ' на ваши реальные данные
TELEGRAM_BOT_TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN", "ВАШ_ТГ_ТОКЕН")
OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY", "ВАШ_ОПЕНРОУТЕР_КЛЮЧ")

# 2. Инициализация клиентов
bot = Bot(token=TELEGRAM_BOT_TOKEN)
dp = Dispatcher()

ai_client = OpenAI(
    base_url="https://openrouter.ai",
    api_key=OPENROUTER_API_KEY,
)

# Выберите модель. Для тестов отлично подойдет быстрая и бесплатная модель
MODEL_NAME = "google/gemini-2.5-flash"

# Handler на команду /start
@dp.message(CommandStart())
async def cmd_start(message: types.Message):
    await message.answer("Привет! Я бот со встроенным искусственным интеллектом. Напиши мне любой вопрос, и я отвечу!")

# Handler для обработки всех текстовых сообщений
@dp.message()
async def handle_message(message: types.Message):
    # Отправляем статус "печать...", чтобы пользователь видел, что бот думает
    await bot.send_chat_action(chat_id=message.chat.id, action="typing")
   
    try:
        # Запрос к OpenRouter API
        completion = ai_client.chat.completions.create(
            model=MODEL_NAME,
            messages=[
                {"role": "user", "content": message.text}
            ],
            extra_headers={
                "HTTP-Referer": "https://t.me", # Опционально для аналитики
                "X-Title": "Telegram AI Bot",
            }
        )
       
        # Получаем ответ от ИИ
        ai_response = completion.choices[0].message.content
       
        # Отправляем ответ пользователю в Telegram
        await message.answer(ai_response)
       
    except Exception as e:
        print(f"Ошибка при запросе к API: {e}")
        await message.answer("Извини, произошла ошибка при обработке запроса. Попробуй позже.")

# Запуск бота
async def main():
    print("Бот успешно запущен и готов к работе...")
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())
 
  • Нравится
Реакции: Сергей Попов и alwaysnear
2