آموزش برنامه نویسی ساخت ربات کوتاه کننده لینک تلگرام
با سلام خدمت کاربران عزیز
در این آموزش میخواهیم توسط ربات تلگرام و زبا 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 و فایل هارو تو هاست بریزم و روبات ست کنم ؟؟؟
چون توکن گذاشتم و ریدایرکت نمیشه و خطا ۴۰۴ میاره