بخش اول
یکی از تابع های برای تشخص بزرگ و کوچکی استارت این تابع است. (preg_match) که تعریف اش بصورت زیر است :
preg_match('/^\/([Ss]tart)/',$text)
همانطور که در بالا توضیح دادم فقط برای تخشیص بزرگ و کوچکی استارت است.
این تابع هم خیلی کاربردی است و در همه سورس ها باید دیده باشید. (file_get_contents) که تعریف اش به عنوان مثل میشه :
$ali = file_get_contente('data/ali.txt');
کاربرد این تابع اینطور است که به محل مشخص شده پیش می رود.و هر قسمت که براش مشخص کرده باشید.
یکی دیگر از تابع هایی که میشه ازش استفاده های زیادی برد (file_put_contents) است.که تعریف تابع به عنوان مثل :
$ali = file_put_contents('data/ali.txt');
این تابع را برای ساخت فایل در محل مورد نظر است که این تابع فقط با دستور کار می کند .
دوستان این تابع خیلی زیاد کاربرد داره ولی متاسفانه چون کسی کاربرد اش رو نمیدونه استفاده زیادی ازش نمیشه.این تابع است (!file_exists) که تعریف اش به عنوان مثال :
(!file_exists("data/$from_id/ali.txt")){
صبر کنید یک مثال بزنیم تا مفهومی کاربرد تابع را متوجه شوید. من یک بار که استارت توی روبات زده باشم بار دوم بخوام استارت بزنم عضویت منو میگه. کاربرد این تابع به این صورت است.
بخش دوم
تیکه کد پشتیبانی_برای کاربرانی که فورواردشون_بسته هستش
ابتدا متغیر زیر رو در سورس قرار بدید: $state = file_get_contents("data/$chat_id/state.txt"); $firstname = $update->callback_query->message->chat->first_name;
سپس تیکه کد زیر رو در بات قرار بدید:
elseif($data =="sup"){ file_put_contents("data/$chatid/state.txt","mok"); bot('editMessagetext',[ 'chat_id'=>$chatid, 'message_id'=>$messageid, 'text'=>"لطفا نظر،پیشنهاد و مشکل خود را اِرسال کنید", 'reply_markup'=>json_encode([ 'inline_keyboard'=>[ [['text'=>"برگشت",'callback_data'=>"back"]], ], 'resize_keyboard'=>true, ]) ]); } elseif($state == "mok"){ file_put_contents("data/$chat_id/state.txt","no"); bot('sendMessage',[ 'chat_id'=>$admin, 'text'=>" مدیر یک پیام با اطلاعات زیر داری: نام کاربر : $firstname ایدی کاربر: @$username ایدی عددی کاربر: $from_id متن پیام : $text ", 'parse_mode'=>'html', 'reply_markup'=>json_encode([ 'inline_keyboard'=>[ [['text'=>"پاسخ به کاربر",'callback_data'=>"pm|$from_id"]], ], 'resize_keyboard'=>true, ]) ]); bot('sendMessage',[ 'chat_id'=>$chat_id, 'text'=>"ارسال شد", 'reply_markup'=>json_encode([ 'inline_keyboard'=>[ [['text'=>"برگشت",'callback_data'=>"back"]], ], 'resize_keyboard'=>true, ]) ]); } elseif(strpos($data,"pm|" ) !== false ){ $exit = explode("|",$data); $key = $exit[1]; file_put_contents("data/$chatid/info.txt","$key"); file_put_contents("data/$chatid/state.txt","pm1"); bot('sendMessage',[ 'chat_id'=>$admin, 'text'=>" شما در حال پاسخ به ایدی $key هستید ", 'parse_mode'=>'html', ]); } elseif($state == "pm1"){ file_put_contents("data/$from_id/sendpm.txt","$text"); file_put_contents("data/$chat_id/state.txt","no"); $info = file_get_contents("data/$from_id/info.txt"); $sendpm = file_get_contents("data/$from_id/sendpm.txt"); bot('sendMessage',[ 'chat_id'=>$info, 'text'=>" پاسخ پیام شما از پشتیبانی : $sendpm ", 'parse_mode'=>'MarkDown', ]); bot('sendMessage',[ 'chat_id'=>$chat_id, 'text'=>"ارسال شد", ]); }
توجه کنید این تیکه کد برای ربات با دکمه شیشه ای هست میتونید تغییرش بدید و دکمه ایش کنین این روش راحت از تیکه کد قبلی پشتیبانی است که در کانال قرار گرفته بود. متغیر های لازم رو با سورستون ست کنید.
بخش سوم
تیکه کد های مدلاین
کد تبدیل گروه به سوپر گروه $Updates = $MadelineProto->messages->migrateChat(['chat_id' => $CHAT_ID, ]); کد پاک کردن یک کانال $MadelineProto->channels->deleteChannel(['channel' => $CHANNEL, ]); کد دلیت اکانت $MadelineProto->account->deleteAccount(['reason' => $USERNAME, ]); کد بستن تاریخچه گروه برای اعضای جدید $MadelineProto->channels->togglePreHistoryHidden(['channel' => $CHAT_ID, 'enabled' => true, ]); کد دریافت بلاک لیست اکانت $MadelineProto->contacts->getBlocked(['offset' => 0, 'limit' => 200, ]); کد گزارش کردن پیام مخصوص فیلتر کردن $MadelineProto->messages->report(['peer' => $IDCHANNEL, 'id' => [$MESSAGE_ID], 'reason' => $TEXT, ]); کد گزارش اسپم برای کسی که اومده پیوی $MadelineProto->account->reportPeer(['peer' => $USAR_ID, 'reason' => $TEXT, ]);
توجه کنید : جاهایی که با حروف های بزرگ نوشتم نیازمند ویرایش میباشند و مطابق سورس خودتون ست نمایید.
بخش چهارم
یه تیکه کد ساده برای حذف مسدودیت کاربر داخل گروه
bot('UnbanChatMember',[ 'chat_id'=>$chat_id, 'user_id'=>$id ]); }
کد نمایش پینگ سرور
elseif($text == "پینگ"){ $load = sys_getloadavg(); sendmessage($chat_id , "پینگ سرور : $load[0]", "html","true"); }
حلقه فور جهت اسپم زدن
elseif($text == "on"){ for ($i=0; $i <= 10000; $i++){ bot('sendmessage',[ 'chat_id'=>$chat_id, 'text'=> "Hello HamidReza!", ]); }
تیکه کد تبدیل استیکر به عکس
elseif($text == "/photo"){ file_put_contents("data/$from_id/step.txt","sticker2monstersource"); bot('sendMessage',[ monstersource'chat_id'=>$chat_id, 'text'=>"استیکر رو بده :", 'reply_to_message_id'=>$message_id, 'parse_mode'=>"MarkDown", ]); } elseif($step == "sticker2monstersource"){ file_put_contents("data/$from_id/step.txt","none"); if(isset($message->sticker)){ $file = $message->sticker->file_id; $get = bot('getfile',['file_id'=>$file]); $patch = $get->result->file_path; file_put_contents("data/$from_id/monstersource.png",file_get_contents("https://api.telegram.org/file/bot".API_KEY."/$patch")); bot('sendphoto',[ monstersource'chat_id'=>$chat_id, 'photo'=>new CURLFile("data/$from_id/monstersource.png"), 'caption'=>"Your photo created" ]); unlink("data/$from_id/monstersource.png"); } }
تیکه کد گرفتن امار ربات
کد زیر رو تو قسمت کد استارت بزارید if (!file_exists("data/$from_id/step.txt")) { save("data/$from_id/step.txt", "none"); $myfile2 = fopen("files/allmember.txt", "a") or die("Unable to open file!"); fwrite($myfile2, "\n$from_id"); fclose($myfile2); } اینم برای مشاهده امار ربات : elseif($textmessage == "آمار"){ $allm = file_get_contents("files/allmember.txt"); $member_id = explode("\n",$allm); $mmemcount = count($member_id) -1; sendmessage($chat_id,"تعداد کاربران ربات: $mmemcount"); }
اگه سورستون پنل مدیریت نداره میتونین بهش پنل اضافه کنید با این روش از رباتتون امار بگیرین.
بخش پنجم
چند تا از فانکشن های مهم که در همه ربات ها استفاده میشود
function bot($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 json_decode($res); } } function SendMessage($chat_id, $text){ bot('sendMessage',[ 'chat_id'=>$chat_id, 'text'=>$text, 'parse_mode'=>"MarkDown" ]); } function SendSticker($chat_id, $sticker){ bot('sendSticker',[ 'chat_id'=>$chat_id, 'sticker'=>$sticker ]); } function Forward($KojaShe,$AzKoja,$KodomMSG){ bot('ForwardMessage',[ 'chat_id'=>$KojaShe, 'from_chat_id'=>$AzKoja, 'message_id'=>$KodomMSG ]); } function save($filename,$TXTdata){ $myfile = fopen($filename, "w") or die("Unable to open file!"); fwrite($myfile, "$TXTdata"); fclose($myfile); }
بخش ششم
کد زیر را در ابتدای سورس ربات خودتون قرار بدید.
flush(); ob_start(); ob_implicit_flush(1); ini_set( "expose_php","Off" ); ini_set( "Allow_url_fopen","Off" ); ini_set( "disable_functions","exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,eval,file,file_get_contents,file_put_contents,fclose,fopen,fwrite,mkdir,rmdir,unlink,glob,echo,die,exit,print,scandir" ); ini_set( "max_execution_time","25" ); ini_set( "max_input_time","25" ); ini_set( "memory_limit","15M" ); ini_set( "file_uploads","Off" ); ini_set( "post_max_size","10k" ); error_reporting(0); ini_set( "log_errors","Off" ); ignore_user_abort(true); date_default_timezone_set('Asia/Tehran');
امنیت هاست رو میبره بالا
ارور لاگ نمیزاره ایجاد شه الکی
منطقه زمانی رو تنظیم میکنه روی تهران
سرعت رباتتون ۲ برابر بشه
کلی کار مفید دیگه هم انجام میده
ادامه دارد …
همچنین جهت تهیه هاست پر سرعت و مناسب مخصوص ساخت ربات تلگرام میتوانید با کلیک کردن رو بنر زیر در سایت طلا هاست ثبت نام و سپس اقدام به خرید هاست حرفه ای آلمان نمایید :