Автопостинг і взаємодія з аудиторією в Telegram за допомогою PHP та AI (практичний кейс)

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

У цьому дописі розглядається реалізація Telegram-бота для автопостингу та відповіді в чатах із використанням PHP і AI (Llama 3.1 через Groq API). Розберемо архітектуру, логіку роботи, обмеження та практичні рішення.

Вступ

Автоматизація Telegram-каналів — досить популярна задача, особливо в тематиках криптовалюти, маркетингу та ком’юніті-менеджменту.

Більшість рішень або занадто прості (звичайний автопостинг), або занадто складні (мікросервіси, черги, окремі AI-сервіси).

Ми вирішили зробити щось посередині:
простий, але гнучкий бот на PHP, який:

  • генерує контент
  • постить у канал
  • відповідає в чатах

Що хотіли реалізувати

Основні задачі:

  • автогенерація постів
  • постинг у Telegram-канал
  • відповіді в групах по ключових словах
  • інтеграція з AI
  • базова анти-спам логіка

Архітектура рішення

Система максимально проста:

  • PHP-скрипт (CLI)
  • Cron для запуску
  • Telegram Bot API
  • AI API (Groq)
  • локальні файли для історії

Схема:

Cron → PHP Script → Telegram API
↓
Groq AI
↓
Data APIs

Основний принцип роботи

Скрипт запускається по cron і виконує 2 задачі:

  • Генерує пост → публікує в канал
  • Перевіряє нові повідомлення → відповідає

Генерація контенту через AI

Ми використовували модель Llama 3.1 через Groq API.

Основна функція:

function callGroq($apiKey, $prompt) {
    $res = curlRequest("https://api.groq.com/openai/v1/chat/completions", [
        "model" => "llama-3.1-8b-instant",
        "messages" => [
            ["role" => "user", "content" => $prompt]
        ]
    ], [
        'Authorization: Bearer ' . $apiKey
    ]);
    $json = json_decode($res, true);
    return $json['choices'][0]['message']['content'] ?? null;
}

Формування поста

Пост будується динамічно:

  • дані ринку
  • текст із AI
  • посилання
  • хештеги
function generatePost($config) {
    $market = getMarketPrice();
    $prompt = str_replace('{MARKET}', $market, $config['custom_prompt']);
    return callGroq($config['groq_key'], $prompt);
}

Отримання ринкових даних

Для «живого» контенту використовувався зовнішній API:

function getMarketPrice() {
    $res = curlRequest("//api.dexscreener.com/latest/dex/pairs/solana");
    $json = json_decode($res, true);
    return $json['pairs'][0]['priceUsd'] ?? 'N/A';
}

Постинг у Telegram

Використовується стандартний Bot API:

function sendTelegramMessage($token, $chatId, $text) {
    $url = "https://api.telegram.org/bot{$token}/sendMessage";
    curlRequest($url, json_encode([
        'chat_id' => $chatId,
        'text' => $text,
        'parse_mode' => 'HTML'
    ]), ['Content-Type: application/json']);
}

Відповіді в чатах

Бот отримує повідомлення через getUpdates, фільтрує їх і відповідає:

if (stripos($text, $keyword) !== false) {
    $reply = generateReply($config, $text);
    sendTelegramMessage($token, $chatId, $reply);
}

Анти-спам логіка

Щоб уникнути проблем:

  • історія повідомлень (щоб не відповідати двічі)
  • затримки між відповідями
  • фільтр груп і користувачів

Проблеми, з якими зіткнулися

1. Обмеження Telegram API

  • rate limit
  • затримки

2. Polling замість Webhook

  • Через простоту використовувався polling → більша затримка

3. AI не завжди стабільний

  • іноді генерує занадто довгі відповіді
  • потребує обмеження

Що вийшло

У результаті:

  • бот генерує контент
  • постить у канал
  • відповідає в чатах
  • працює без складної інфраструктури

Висновки

  • PHP підходить для таких задач на рівні MVP
  • Cron + polling — просте, але робоче рішення
  • AI значно покращує якість контенту
👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Ctrl + Enter
Ctrl + Enter

Підписатись на коментарі