إنشاء بوت تواصل Telegram باستخدام PHP
بالطبع! هنا هو مثال على كيفية برمجة بوت تواصل للتليجرام باستخدام لغة PHP:
<?php
// تعريف التوكن الخاص بالبوت
$token = 'YOUR_BOT_TOKEN';
// تعريف متغيرات الاستفادة من برنامج الكاش
define('CACHE_DIR', __DIR__ . '/cache/');
define('CACHE_TTL', 3600); // ثانية واحدة
// استدعاء الدالة للتواصل مع البوت
function apiRequest($method, $parameters)
{
if (!is_string($method)) {
error_log("Method name must be a string\n");
return false;
}
if (!$parameters) {
$parameters = array();
} elseif (!is_array($parameters)) {
error_log("Parameters must be an array\n");
return false;
}
foreach ($parameters as $key => &$val) {
// encoding to JSON array parameters, for example reply_markup
if (!is_numeric($val) && !is_string($val)) {
$val = json_encode($val);
}
}
$url = "https://api.telegram.org/bot" . $GLOBALS['token'] . "/" . $method . '?' . http_build_query($parameters);
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($handle, CURLOPT_TIMEOUT, 60);
return exec_curl_request($handle);
}
// دالة للتواصل مع البوت باستخدام cURL
function exec_curl_request($handle)
{
$response = curl_exec($handle);
if ($response === false) {
$errno = curl_errno($handle);
$error = curl_error($handle);
error_log("Curl returned error $errno: $error\n");
curl_close($handle);
return false;
}
$http_code = intval(curl_getinfo($handle, CURLINFO_HTTP_CODE));
curl_close($handle);
if ($http_code >= 500) {
// do not wat to DDOS server if something goes wrong
sleep(10);
return false;
} elseif ($http_code != 200) {
$response = json_decode($response, true);
error_log("Request has failed with error {$response['error_code']}: {$response['description']}\n");
if ($http_code == 401) {
throw new Exception('Invalid access token provided');
}
return false;
} else {
$response = json_decode($response, true);
if (isset($response['description'])) {
error_log("Request was successful: {$response['description']}\n");
}
$response = $response['result'];
}
return $response;
}
// استدعاء الدالة لتحديث الرسالة للتواصل
function updateMessage($chatId, $messageId, $text, $replyMarkup = null)
{
return apiRequest("editMessageText", [
'chat_id' => $chatId,
'message_id' => $messageId,
'text' => $text,
'reply_markup' => $replyMarkup
]);
}
// استدعاء الدالة لإرسال رسالة جديدة
function sendMessage($chatId, $text, $replyMarkup = null)
{
return apiRequest("sendMessage", [
'chat_id' => $chatId,
'text' => $text,
'reply_markup' => $replyMarkup
]);
}
// الحصول على التحديثات الجديدة من البوت
$update = json_decode(file_get_contents('php://input'), true);
// التأكد من وجود تحديث
if (isset($update)) {
$message = isset($update['message']) ? $update['message'] : null;
$callbackQuery = isset($update['callback_query']) ? $update['callback_query'] : null;
if ($message) {
$chatId = $message['chat']['id'];
$text = $message['text'];
// برمجة رد البوت على رسالة المستخدم
if ($text == '/start') {
sendMessage($chatId, "مرحبًا بك في بوت التواصل!");
} elseif ($text == '/hello') {
sendMessage($chatId, "مرحبًا!");
} else {
sendMessage($chatId, "أنا آسف، لم أفهم ما تقصده. يرجى إعادة المحاولة.");
}
} elseif ($callbackQuery) {
$chatId = $callbackQuery['message']['chat']['id'];
$messageId = $callbackQuery['message']['message_id'];
$data = $callbackQuery['data'];
// برمجة رد البوت على استجابة المستخدم
if ($data == 'like') {
updateMessage($chatId, $messageId, "شكرًا لك على إعجابك!");
} elseif ($data == 'dislike') {
updateMessage($chatId, $messageId, "نأسف لعدم إعجابك!");
}
}
}
يرجى استبدال YOUR_BOT_TOKEN بتوكن البوت الخاص بك. يمكنك تنفيذ هذا الكود على الخادم الخاص بك لتشغيل البوت والتفاعل معه.
原文地址: https://www.cveoy.top/t/topic/pigO 著作权归作者所有。请勿转载和采集!