آموزش برنامه نویسی ساخت ربات کوتاه کننده لینک تلگرام
با سلام خدمت کاربران عزیز
در این آموزش میخواهیم توسط ربات تلگرام و زبا php یک کوتاه کننده لینک ساده ایجاد کنیم .
ربات بدین صورت عمل خواهد کرد – زمانی که کاربر وارد ربات میشود و هر پیامی رو که ارسال میکند ما به منزله لینک دریافت میکنیم و با فانکشن FILTER_VALIDATE_URL لینک ارسالی کاربر را چک میکنیم در صورتی که لینک صحیح نباشد پیام (invalid url) را برای کاربر ارسال میکنم . و در صورتی که لینک صحیح باشه لینک رو به همراه عدد تصادفی (لاین ۵۱) در دیتابیس sqlite ذخیره میکنیم .
فایل bot.php :
<?php
function objectToArray( $object )
{
if( !is_object( $object ) && !is_array( $object ) ){
return $object;
}
if( is_object( $object ) ){
$object = get_object_vars( $object );
}
return array_map( 'objectToArray', $object );
}
$string = json_decode(file_get_contents('php://input'));
$result = objectToArray($string);
$user_id = $result['message']['from']['id'];
$text = $result['message']['text'];
$token = '361224581:AAExi7x443GvN5jhjhc5N4RGt6FbmI43Q';
switch ($text) {
case '/start':
$text_reply = "سلام به ربات کوتاه کننده لینک خوش آمدید.";
break;
default:
$text_reply = sortLink($text);
break;
}
$url = 'https://api.telegram.org/bot'.$token .'/sendMessage?text='.$text_reply.'&chat_id='.$user_id;
$res = file_get_contents($url);
function sortLink($text){
$address = "https://tooba.co/bot-short-link/";
try{
$conn = new PDO("sqlite:db.sqlite");
$conn->exec('set names utf8');
}catch(PDOException $e){
echo $e->getMessage();
}
if(empty($text))
return "empty";
elseif(filter_var($text, FILTER_VALIDATE_URL) === false)
return "invalid url";
else{
$name = substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyz"), 0, 7);
$insert = $conn->prepare("INSERT INTO urls (url , name) VALUES (:url , :name)");
$query = $insert->execute(array( ':url' => $text, ':name' => $name ));
if($query == '1')
return $address.$name;
else
return "nameError";
}
}
– توکن ربات رو جایگزین کنید .
– در فانکشن sortLink آدرس سایت و نام دیتابیس را وارد کنید .
در ادامه یک فایل با نام index.php ایجاد میکنم تا زمانی که کاربر بر روی لینک کوتاه ما کلیک میکند به آدرس مورد نظر ریدایرکت شود .
ابتدا عدد تصادفی رو از انتهای آدرس دریافت کنیم (http://tooba.com/sort-lin/index.php?url=fdf83d9) و عدد را در دیتابیس sqlite جستجو می کنیم و url ثبت شده در دیتابیس را دریافت میکنم .
و در نهایت کاربر را به url درج شده در دیتابیس ریدایرکت میکنیم .
فایل index.php :
<?php
try{
$conn = new PDO("sqlite:db.sqlite");
$conn->exec('set names utf8');
}catch(PDOException $e){
echo $e->getMessage();
}
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return $str;
}
$name = clean($_REQUEST['url']);
if(isset($name)){
$stmt = $conn->prepare("SELECT * FROM urls WHERE name = :name ORDER BY id DESC LIMIT 1" );
$stmt->execute(array(
':name' => $name
));
$value = $stmt->fetchObject();
if(count($value) == 1 ){
header("Location: ".$value->url);
exit;
}else{
echo "<div style='text-align: center; margin-top: 20px; font: bold 15px arial;'>چنین آدرسی وجود ندارد</div>";
}
}
راه اندازی ربات در ۳ مرحله :
۱- فایل های ربات را دانلود کنید و در هاست خودتان آپلود کنید (سایت حتما داری ssl باشد).
۲- https://api.telegram.org/bot<token>/setWebhook?url=<url> آدرس زیر در نوار آدرس مرورگر کپی کنید و توکن + آدرس فایل bot.php در هاست خودتان را جایگزین کنید . مثل آدرس رو به رو : (htts://tooba.co/bot-short-link/bot.php).
۳- فایل bot.php را باز کنید و توکن ربات + آدرس سایت را جایگزین کنید .
-
رضا احمدی - 21 مارس 2021
هنوزم کار میکنه؟
-
علی - 30 می 2022
سلام وقت بخیر
یک راهنمایی میخواستم
باید یک دیتابیس به اسم sqlite درست کنم یا فقط باید توکن روبات بزارم تو قایل bot و فایل هارو تو هاست بریزم و روبات ست کنم ؟؟؟
چون توکن گذاشتم و ریدایرکت نمیشه و خطا ۴۰۴ میاره