سلام. توی این مقاله می خوایم یک آموزش ساخت ربات تلگرام با php رو با جزئیات کامل داشته باشیم. نحوه ی ارسال متن، فایل، عکس و ...، نحوه ی دریافت اطلاعاتی ارسالی از سمت کاربر، نحوه ی عبور از تحریم ها برای هاست های ایرانی و ... در این مقاله به تفصیل آموزش داده خواهد شد.

پیش نیاز آموزش ساخت ربات تلگرام با php در این مقاله آشنا بودن با زبان php و برخی تگ های html است.

فهرست آموزش ساخت ربات تلگرام با php

- ساخت ربات تلگرام
- ارسال پیام متنی به ربات
- استفاده از پراکسی رایگان برای هاست های ایرانی
- ارسال پیام مالتی مدیا به ربات
- استایل دهی پیام (ضخیم کردن متن، لینک دار کردن و ...)
- کیبرد دکمه ای و شیشه ای
- آپدیت و حذف پیام های قبلی
- دریافت پیام ارسالی از طرف کاربر
- وب هوک ها



ساخت ربات تلگرام

برای ساخت ربات تلگرام باید از رباتی با نام کاربری botFather استفاده کنیم. این نام کاربری را در تلگرام خود جستجو کنید تا ربات پیدا شود. سپس برای ایجاد ربات جدید، دستور newbot/ را به ربات ارسال می کنیم. با ارسال این دستور ربات از ما می خواهد که یک نام برای ربات خود انتخاب کنیم. این نام می تواند هر نام دلخواهی باشد و می توانید هم به فارسی و هم انگلیسی آن را بنویسید. این نام همان عنوان ربات است. پس از ارسال نام، ربات از ما می خواهد که یک نام کاربری یکتا برای ربات خود انتخاب کنیم. این نام باید به انگلیسی بوده، هیچ فاصله ای نداشته باشد و حتماً به کلمه ی bot ختم شود. در صورتی که نام انتخابی شما قبلاً توسط شخص دیگری انتخاب شده باشد، ربات یک پیام خطا ارسال می کند و شما دوباره بایستی یک نام جدید برای ربات خود انتخاب و ارسال کنید.

در صورتی که نام انتخابی شما یکتا و بدون خطا باشد، یک پیام تبریک که حاوی یک کد توکن برای ربات است را دریافت می کنید. در برنامه نویسی خود برای ارسال پیام به ربات و دریافت پیام از ربات به این کد توکن نیاز داریم.







ارسال پیام متنی به ربات



به طور کلی برای ارسال انواع پیام ها به ربات از لیست متد هایی که در این لینک آمده است استفاده می کنیم:



https://core.telegram.org/bots/api#available-methods



در این صفحه، سایت تلگرام تمام متد های ارسال اطلاعات به ربات و همچنین پارامتر های هر کدام را توضیح داده است. در این بخش بعضی از این متد ها که مربوط به ارسال پیام های متنی و مالتی مدیا توضیح داده خواهد شد.

برای ارسال هر نوع پیامی به ربات از api زیر استفاده می کنیم:



https://api.telegram.org/bot<token>/METHOD_NAME



پارامتر ها را هم با متد GET و هم با متد POST می توانیم به این API ارسال کنیم. به جای <token> همان کد توکنی که در بخش قبل دریافت کردیم را قرار می دهیم و به جای METHOD_NAME متد مورد نظر برای ارسال داده و پارامتر های آن قرار می گیرد. از آنجایی که از متد get نیز می توان استفاده کرد، به سادگی می توانیم پیام های ساده را از طریق مرورگر نیز برای ربات ارسال کنیم. در ادامه یک پیام متنی را ابتدا از طریق خود مرورگر و سپس از طریق برنامه نویسی در یک فایل php به ربات ارسال می کنیم.



متد sendMessage



از این متد برای ارسال پیام متنی به ربات استفاده می شود. هر یک از متد ها یک سری پارامتر دارند. از این پارامتر ها برای مشخص کردن اطلاعات ارسالی و همچنین تنظیمات مربوطه استفاده می شود. همانطور که در جدول مشخصات پارامتر ها می بینید، نام هر پارامتر، نوع پارامتر، اختیاری یا اجباری بودن آن و توضیحات تکمیلی مشخص شده است. در اینجا متد sendMessage دو پارامتر اجباری chat_id و text دارد.

پارامتر chat_id یک پارامتر اجباری برای تمام متد های ارسال اطلاعات است و برای این است که ربات بداند که پیام را باید به چه کسی ارسال کند. در واقع chat_id شناسه ی گیرنده ی پیام است. هر کاربری در تلگرام یک شناسه ی عددی دارد. این شناسه را به دو شکل می توانیم پیدا کنیم. یکی وقتی که کاربر پیامی برای ربات ارسال می کند (که در بخش دریافت اطلاعات توضیح داده می شود) و یکی با استفاده از ربات @userinfobot. هر کاربری با استفاده از این ربات می تواند شناسه ی تلگرامی خود را پیدا کند.

ربات @userinfobot را در تلگرام خود جستجو کرده و پیدا کنید. پس از start یک پیام حاوی اطلاعات کاربری برای شما ارسال می شود. مقدار Id همان شناسه ی کاربری شماست. این شناسه را در جایی ذخیره کنید تا در متد های ارسال پیام، برای ارسال پیام های تستی به تلگرام خود از آن استفاده کنید.

پارامتر بعدی از متد sendMessage، پارامتر text است. که همان پیام متنی ای است که می خواهیم به ربات ارسال کنیم. حالا برای تست یک متن ساده مثل "سلام" را یکبار با استفاده از مروگر و یکبار با استفاده از برنامه نویسی برای ربات خود ارسال می کنیم.

خب، طبق توضیح داده شده، مقادیر را در لینک زیر جایگذاری می کنیم:



https://api.telegram.org/bot<token>/METHOD_NAME

https://api.telegram.org/bot11122470...mE/sendMessage
حالا پارامتر های خود را به لینک بالا اضافه کرده و آن را در مرورگر خود اجرا می کنیم:





در صورتی که مشکلی در ارسال اطلاعات وجود نداشته باشد، پیام به کاربر ارسال شده و خروجی زیر در مروگر چاپ می شود:



{"ok":true,"result":{"message_id":2,"from":{"id":1 112247097,"is_bot":true,"first_name":"test","usern ame":"backendbazbot"},"chat":{"id":275488860,"firs t_name":"zohreh","last_name":"Ahmadi","username":" zohreh_ahmadi70","type":"private"},"date":16023099 73,"text":"\u0633\u0644\u0627\u0645"}}


که در آن اطلاعات کاربر، اطلاعات ربات و اطلاعات متن ارسالی مشخص شده است.



ارور های احتمالی:

{"ok":false,"error_code":400,"description":"Bad Request: chat_id is empty"}
ددر صورتی که پارامتر chat_id وارد نشده و یا خالی باشد با این ارور مواجه خواهید شد.



{"ok":false,"error_code":400,"description":"Bad Request: message text is empty"}
در صورتی که پارامتر text وار نشده و یا خالی باشد با این ارور مواجه خواهید شد.



{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}
این ارور به این معناست که یا chat_id اشتباه وارد شده است و یا اینکه chat_id صحیح است اما آن کاربر در ربات وارد نشده و start نکرده است.



برای ارسال این پیام از طریق فایل php، کافیست یک فایل php در هاست یا لوکال هاست خود ایجاد کرده و کد زیر را در آن بنویسید:

کد:
<?php
$result = file_get_contents("https://api.telegram.org/bot1112247097:AAGa4iaP8HPVd6oBvmpKiPrKoY2dp1gg7mE/sendMessage?chat_id=275488860&text=سلام");
echo $result;


تابع file_get_contents لینکی که به عنوان ورودی دریافت کرده است را با متد get اجرا کرده و نتیجه را در خروجی برمیگرداند. برای ارسال پیام های ساده می توان بدون هیچ مشکلی از این تابع استفاده کرد اما برای ارسال پیام های پیچیده تر یا استفاده از پراکسی هنگام ارسال داده در هاست های ایرانی باید از روش کاربردی تری مثل curl استفاده کرد. همچنین با استفاده از curl می توانیم پارامتر های خود را با استفاده از متد post که متد امن تری است ارسال کنیم.



اگر همین پیام را بخواهیم با استفاده از curl استفاده کنیم، کد آن را به این شکل می نویسیم:

کد:
<?php
$handle = curl_init("https://api.telegram.org/bot1112247097:AAGa4iaP8HPVd6oBvmpKiPrKoY2dp1gg7mE/sendMessage");
$parameters = [
    "chat_id" => 275488860,
    "text"    => "سلام"
];
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, json_encode($parameters));
curl_setopt($handle, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
$result = curl_exec($handle);
echo $result;


استفاده از پراکسی رایگان برای هاست های ایرانی

در صورتی که از هاست خارجی استفاده می کنید، می توانید از این بخش گذشته و بخش بعدی آموزش را مطالعه کنید.

هاست های ایرانی چون به اینترنت ایران متصل هستند، نمی توانند بدون پراکسی به سرور های تلگرام دسترسی داشته باشند. پس بایستی از یک پراکسی در تابع curl برای ارسال اطلاعات استفاده کنیم. در این بخش می خواهیم طریقه ی ساخت یک پراکسی رایگان از طریق ساخت یک اسکریپت در گوگل را آموزش ببینیم. در این روش به جای ارتباط مستقیم با تلگرام، ابتدا پیام خود را به یک اسکریپت گوگل ارسال کرده و سپس از آنجا آن را به تلگرام ارسال می کنیم. نیازی به یادگیری نحوه ی کد نویسی این بخش ندارید و فقط کافیست آن را دقیقاً طبق آموزش ایجاد کرده و در تابع curl خود وارد کنید.





منبع: آموزش ساخت ربات تلگرام با php