Пост
Постинг постов из сайта в телеграмм канал
- создаем любой файл — sait.ru/assets/t4546dfgh4545ftyt.php
🛠 Добавляем в базу таблицу — чтобы небыло повторных публикаций
sent_posts
-пример запроса
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";
+
как 🛠 Добавить в базу таблицу
1