اذهب إلى المحتوى

السؤال

نشر

لدي موقع مُسَضاف على موقع   https://www.infinityfree.com  المجاني والذي يدعم لغة الـــ  PHP ، وهو يعمل بشكل جيد حتى أن موقع الاستضافة دعم موقعي بخاصية الأمان(https)!

استخدمت أحد أقسامه لانشاء نموذج اتصال (https://gbzy.free.nf/contact) وهو يعمل بكفاءة عالية على الشكل التالي:

يُدخِل المستخدم اسمه وبريده الالكتروني ونص الرسالة وبعد التحقق من الكابتشا يتم الارسال!

استخدمت مكتبة الــ (PHPMailer) لتصلني رسالة المستخدم على بريدي الالكتروني!

سؤالي: هل يمكن إيصال الرسالة إلى بوت تلغرام بطريقة ما؟ علماً أنني أنشأت على التلغرام بوتاً مخصصاً لذلك ولدي التوكن الخاص بالبوت ومعرف الشات الخاص بي؟

جربت طرقاً عديدة واستعنت بالشات جي بي تي وفشلت بعمل طريقة لاستقبال الرسائل عبر البوت بدلاً من البريد الالكتروني!

هل هناك مواقع استضافة مجانية تدعم الـ PHP وتدعم عمل البوت؟  

Recommended Posts

  • 0
نشر

 

لا حاجة إذن إلى استخدام PHPMailer، فما تحتاجه هو الإعتماد على  Telegram Bot API وإرسال محتوى الرسالة إلى البوت الخاص بك.

أي إرسال الـ data الخاصة بالنموذج إلى الـ API التالي:

$url = "https://api.telegram.org/bot{$botToken}/sendMessage";

بالطبع botToken هو متغير عليك إنشائه ووضع قيمة التوكن الخاصة بالبوت الذي قمت بإنشائه على تليجيرام، وستحتاج أيضًا إلى إرسال الـ chatId الخاص بالبوت مع البيانات في جسم الطلب body.

وبالطبع عليك تهيئة نص الرسالة ومعالجته قبل إرساله إلى هاتفك، ومعالجة الأخطاء الواردة، كالتالي:

<?php

header('Content-Type: application/json');

define('BOT_TOKEN', 'هنا'); // ضع التوكن هنا
define('CHAT_ID', 'هنا');     // ضع معرف الشات هنا

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405); 
    echo json_encode(['ok' => false, 'message' => 'يجب استخدام طريقة POST فقط']);
    exit;
}

$errors = [];
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$message = trim($_POST['message'] ?? '');

if (empty($name)) {
    $errors[] = 'حقل الاسم مطلوب.';
}
if (empty($email)) {
    $errors[] = 'حقل البريد الإلكتروني مطلوب.';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $errors[] = 'صيغة البريد الإلكتروني غير صحيحة.';
}
if (empty($message)) {
    $errors[] = 'حقل الرسالة مطلوب.';
}

if (!empty($errors)) {
    http_response_code(400); 
    echo json_encode(['ok' => false, 'errors' => $errors]);
    exit;
}

$safe_name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
$safe_email = htmlspecialchars($email, ENT_QUOTES, 'UTF-8');
$safe_message = htmlspecialchars($message, ENT_QUOTES, 'UTF-8');

$text = "<b>📩 رسالة جديدة من موقعك</b>\n\n";
$text .= "<b>👤 الاسم:</b> " . $safe_name . "\n";
$text .= "<b>📧 البريد:</b> " . $safe_email . "\n";
$text .= "<b>💬 الرسالة:</b>\n" . $safe_message;

$url = "https://api.telegram.org/bot" . BOT_TOKEN . "/sendMessage";

$data = [
    'chat_id' => CHAT_ID,
    'text' => $text,
    'parse_mode' => 'HTML' 
];

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

$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);
curl_close($ch);

if ($curl_error) {
    http_response_code(500); 
    echo json_encode(['ok' => false, 'message' => 'فشل الاتصال بـ cURL: ' . $curl_error]);

} elseif ($http_code !== 200) {
    http_response_code(500);
    echo json_encode(['ok' => false, 'message' => 'واجهة التلغرام أرجعت خطأ.', 'response' => json_decode($response)]);

} else {
    $telegramResponse = json_decode($response, true);
    if (isset($telegramResponse['ok']) && $telegramResponse['ok'] === true) {
        http_response_code(200); 
        echo json_encode(['ok' => true, 'message' => 'تم إرسال الرسالة بنجاح!']);
    } else {
        http_response_code(500);
        echo json_encode(['ok' => false, 'message' => 'فشل إرسال الرسالة حسب رد التلغرام.', 'response' => $telegramResponse]);
    }
}
?>

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...