Пост

Постинг постов из сайта в телеграмм канал

CREATE TABLE IF NOT EXISTS sent_posts (
    post_id INT PRIMARY KEY
);

Создаем канал добавляем в канал созданого бота в АДМИНЫ канала из https://web.telegram.org/k/#@BotFather — копируйте ключ HTTP API: 81923978c------------mlVK4a

в файле прописываем данные к базе

APi ключ

название канала

<?php

date_default_timezone_set('Europe/Moscow');
echo "[" . date('Y-m-d H:i:s') . "] Запуск скрипта...\n";

// === Настройки подключения к БД ===
$db_config = [
     'host' => 'localhost',
    'port' => 3306,
    'dbname' => '900000008',
    'charset' => 'utf8mb4',
    'user' => '9000000007',
    'pass' => 'T000000000t8!',
];

// Токен и ID Telegram-канала
$bot_token = '8497880000000rWBabKRc'; // Замените токен ОБЯЗАТЕЛЬНО !!!
$channel_id = '@oshhfhfhhhem'; // Замените на ваш канал ОБЯЗАТЕЛЬНО !!!

$max_message_length = 3500;

try {
    $dsn = "mysql:host={$db_config['host']};port={$db_config['port']};dbname={$db_config['dbname']};charset={$db_config['charset']}";
    $pdo = new PDO($dsn, $db_config['user'], $db_config['pass']);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "[OK] Подключение к базе данных установлено.\n";
} catch (PDOException $e) {
    die("[ERROR] Ошибка подключения к базе: " . $e->getMessage() . "\n");
}

// === Получаем 1 пост, который ещё не был отправлен ===
$sql = "
    SELECT p.post_id, p.post_title, p.post_content
    FROM posts p
    LEFT JOIN sent_posts s ON p.post_id = s.post_id
    WHERE s.post_id IS NULL
    ORDER BY p.post_id ASC
    LIMIT 1
";

try {
    $stmt = $pdo->query($sql);
    $post = $stmt->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    die("[ERROR] Ошибка при выполнении запроса к базе: " . $e->getMessage() . "\n");
}

if (!$post) {
    echo "[INFO] Нет новых постов для отправки.\n";
    exit(0);
}

echo "[INFO] Найден пост для отправки: post_id = {$post['post_id']}\n";

// === Формируем сообщение ===
$title   = trim($post['post_title']);
$content = trim($post['post_content']);

$message = "<b>" . htmlspecialchars($title) . "</b>\n\n" . htmlspecialchars($content);

if (mb_strlen($message, 'UTF-8') > $max_message_length) {
    echo "[INFO] Сообщение превышает {$max_message_length} символов, обрезаем...\n";
    $message = mb_substr($message, 0, $max_message_length - 3, 'UTF-8') . '...';
}

echo "[INFO] Отправка в канал: $channel_id\n";
echo "[INFO] Сообщение: " . mb_substr($message, 0, 80, 'UTF-8') . "...\n"; // Показываем начало

// === Отправляем в Telegram с помощью cURL ===
$url = "https://api.telegram.org/bot$bot_token/sendMessage";

$data = [
    'chat_id' => $channel_id,
    'text' => $message,
    'parse_mode' => 'HTML',
    'disable_web_page_preview' => false,
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);

$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo "[ERROR] Ошибка cURL: " . curl_error($ch) . "\n";
    curl_close($ch);
    exit(1);
}

curl_close($ch);

$response = json_decode($result, true);
echo "[DEBUG] Ответ Telegram API:\n$result\n";

// === Проверяем успешность отправки ===
if (isset($response['ok']) && $response['ok'] === true) {
    try {
        $insert_stmt = $pdo->prepare("INSERT INTO sent_posts (post_id) VALUES (:post_id)");
        $insert_stmt->execute(['post_id' => $post['post_id']]);
        echo "[SUCCESS] Пост ID {$post['post_id']} успешно опубликован и записан в sent_posts.\n";
    } catch (PDOException $e) {
        echo "[ERROR] Ошибка записи post_id в sent_posts: " . $e->getMessage() . "\n";
    }
} else {
    $error_message = $response['description'] ?? 'Неизвестная ошибка';
    echo "[ERROR] Не удалось отправить пост. Ответ Telegram: $error_message\n";
}

echo "[" . date('Y-m-d H:i:s') . "] Скрипт завершён.\n";

+ как 🛠 Добавить в базу таблицуСнимок экрана 2025-09-19 в 22.14.15.png

Для ответа вы можете авторизоваться