آموزش برنامه نویسی ساخت ربات کوتاه کننده لینک تلگرام

ربات کوتاه کننده لینک تلگرام

با سلام خدمت کاربران عزیز
در این آموزش میخواهیم توسط ربات تلگرام و زبا 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 را باز کنید و توکن ربات + آدرس سایت را جایگزین کنید .

  1. رضا احمدی - 21 مارس 2021

    هنوزم کار میکنه؟

  2. علی - 30 می 2022

    سلام وقت بخیر
    یک راهنمایی میخواستم
    باید یک دیتابیس به اسم sqlite درست کنم یا فقط باید توکن روبات بزارم تو قایل bot و فایل هارو تو هاست بریزم و روبات ست کنم ؟؟؟
    چون توکن گذاشتم و ریدایرکت نمیشه و خطا ۴۰۴ میاره


همینک دیدگاه خود را برای ما بنویسید!