سلام روزتون بخیر ،
من یه ربات تلگرام دارم که میخوام روی هاست داخلی اجراش کنم اما خب همونطور که میدونید تلگرام فیلتره ..
قبلا یه مقاله توی اینترنت دیدم که طرف میومد با اضافه کردن چند خط کد به cURL ، درخواست رو با پروکسی ارسال میکرد.
پروکسی با یکی از سایت های گوگل ساخته میشد دقیق یادم نیست هرچی میگردم دوباره پیداش نکردم اگه شما چنین روشی بلدید ممنون میشم بگید.
کد اصلی به صورت زیره :
function Post($method, $datas)
{
$url = "https://api.telegram.org/bot" . API_KEY . $method;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($datas));
$res = curl_exec($ch);
if (curl_error($ch)) {
var_dump(curl_error($ch));
} else {
return $res;
}
}
متاسفانه از کاربرای راکت آبی گرم نشد و این دومین سوال بی پاسخمه.
ولی تقریبا جواب رو پیدا کردم و روش ارسال ریکوئست به سرور تلگرام بدون نیار به SSL و با پروکسی رو میزارم تا شاید به درد رهگذری خورد.
در مرحله اول وارد این سایت بشید و روی new project بزنید
بعدش تمام کد هارو پاک کنید و کد های زیر رو جایگزین کنید :
function doGet(e) {
if(typeof e !== 'undefined'){
return requestHandler(e);
}
}
function doPost(e) {
if(typeof e !== 'undefined'){
return requestHandler(e);
}
}
function requestHandler(e){
var res = handleRequest(e);
return ContentService.createTextOutput(res);
}
function handleRequest(e) {
if(typeof e.parameter.bot_token === 'undefined'){
return 'Error! Bot token not provided';
} else if(typeof e.parameter.method === 'undefined') {
return 'Error! Method name not provided';
}
var bot_token = e.parameter.bot_token;
var tg_method = e.parameter.method;
var data = {
"method": "post",
"muteHttpExceptions": true,
"contentType": "application/json",
}
if(typeof e.parameter.args !== 'undefined'){
var args = e.parameter.args;
data.payload = args;
}
//return e.parameter.args;
var res = UrlFetchApp.fetch('https://api.telegram.org/bot' + bot_token + '/' + tg_method, data);
Logger.log(res.getContentText());
return res.getContentText();
}
خب هالا روی آیکون save بالای صفحه بزنید و بعدش روی گزینه deploy و سپس گزینه new deployment را انتخاب کنید.
روی تنظیمات جلوی Select type بزنید و گزینه web app رو انتخاب کنید.
فیلد اول خالی باشه فیلد دوم روی me و فیلد سوم روی anyone و در آخر روی deploy بزنید.
اکانت خودتون رو تایید کنید و سپس به شما یه لینک نمایش داده میشه ، اون لینک رو کپی کنید و درخواست های cURL رو به اون بفرستید
نمونه کد به صورت زیر:
$parameters = [
"chat_id" => 2079091905,
"text" => "Hello world :)"
];
$args = array(
'bot_token' => "5281589248:AAH9jE4i6eDyl937C7SUMe9Gmz8ZgYbT2T4",
'method' => "sendMessage",
'args' => json_encode($parameters)
);
$handle = curl_init("https://script.google.com/macros/s/AKfycbypTulMTU86jMkNRENtqcWNH4L-pLrmSrCqoBphjmB7El9Dj3MHmUivcludPIHoCffQ/exec");
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $args);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($handle);
echo $result;
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟