در قسمت قبل از آموزش با رباتهای تلگرام و ایجاد ربات با Bot Father آشنا شدیم. در این آموزش کار را با برنامه نویسی به زبان PHP برای این ربات پیش میبریم.
برای ارتباط با ربات تلگرام دو متد وجود دارد. متد setWebhook و متد getUpdates.
متد setWebhook برای ارتباط با تلگرام:
این متد برای دریافت اطلاعات به صورت بلادرنگ است. به این معنی که هر وقت کاربری از ربات شما اطلاعاتی درخواست کرد، سرور تلگرام سریعا به هاست شما متصل شده و درخواست کاربر را به شما اطلاع میدهد.
مزیت بلادرنگ بودن، مزیتی مهم است که یک پیشنیاز دارد و آن هم داشتن دامنهای با https است که در هیتوس راه کاری برای آن تعبیه شده است. به این صفحه رفته و از راهنمای موجود استفاده کنید.
متد getUpdates برای ارتباط با تلگرام:
در این متد درخواستهای کاربران در سرور تلگرام ذخیره شده و ما باید در بازههای زمانی کوتاه از سرور تلگرام درخواستهای کاربران را دریافت کنیم. مزیتی که این روش نسبت به setWebhook دارد در این است که نیازی به داشتن هاست یا سرور با https نداریم.
در ادامه هر دو متد را با هم بررسی میکنیم.
ابتدا مثالی از فعال کردن روش setWebhook بیان میکنیم. با الگوی زیر یک URL ساخته و آن را در مرورگر خود وارد میکنیم:
https://api.telegram.org/bot[TOKEN]/setWebhook?url=[URL]
در مثال فوق Token ربات خود را در [TOKEN]
و آدرس فایل برنامه نویسی شده ارتباط با ربات در [URL]
قرار میگیرد.
مثالی از پیاده سازی الگوی فوق:
https://api.telegram.org/bot249879980:AAHNdWnXjdq6Fw17NF81xXTtjA3xs19Sc6w/setWebhook?url=https://hitos.ir/test/tlg.php
اگر دستور فوق را در مرورگر خود وارد کنیم با پیغامی مانند زیر دریافت میکنیم:
{"ok":true,"result":true,"description":"Webhook was set"}
پیغام فوق یک آرایه JSON است که بیان میکند webhook با موفقیت ثبت شده است. وقتی عملیات webhook با موفقیت انجام شود سرور تلگرام تمامی درخواستهای کاربران را به urlای که برای تلگرام اعلام کردیم ارسال میکند.
برای حذف کردن این webhook پارامتر [URL]
را حذف کرده و در خواست را دوباره با مرورگر ارسال میکنیم:
https://api.telegram.org/bot249879980:AAHNdWnXjdq6Fw17NF81xXTtjA3xs19Sc6w/setWebhook
الگوی پایین برای دریافت آخرین ارسالها با کمک متد getUpdates است:
https://api.telegram.org/bot[TOKEN]/getupdates
مثال استفاده از این متد:
https://api.telegram.org/bot249879980:AAHNdWnXjdq6Fw17NF81xXTtjA3xs19Sc6w/getupdates
اگر این آدرس را درخواست دهیم، چیزی مشابه نتیجه زیر به نمایش در میآید:
{"ok":true,"result":[{"update_id":818742452,
"message":{"message_id":19,"from":{"id":156173107,"first_name":"\u0633\u06cc\u062f \u0645\u0647\u062f\u06cc","username":"esmahdim"},"chat":{"id":156173107,"first_name":"\u0633\u06cc\u062f \u0645\u0647\u062f\u06cc","username":"esmahdim","type":"private"},"date":1471866230,"text":"\/aboutus","entities":[{"type":"bot_command","offset":0,"length":8}]}}]}
در بالا یک آرایه json از کل پیغامها دریافت کردیم.
در ادامه قصد داریم عملیات دریافت اطلاعات با متد getupdate را با ذکر یک مثال به طور کامل شرح دهیم:
header('Content-Type: text/html; charset=utf-8');
$token= "249879980:AAHNdWnXjdq6Fw17NF81xXTtjA3xs19Sc6w";
$url= "https://api.telegram.org/bot".$token."/getupdates";
$update= file_get_contents($url);
$arrayUpdate= json_decode($update, true);
var_dump($arrayUpdate);
در اولین سطر از هدر utf-8 استفاده کردیم تا بتوانیم رشتههای فارسی را مشاهده کنیم.
با دستورات فوق عملیات دریافت update را با زبان php انجام دادیم. برای تمرین برای ربات خود متن بفرستید و با getUpdate پیغامها را دریافت کنید. اگر در متن اسکریپت دریافتی از getUpdate دقت کنید خواهید دید username و نام کاربر و دستوراتی را که درخواست داده است را میتوانید مشاهده کنید.
در پایین دستوراتی برای پیمایش پیغامها مشاهده میکنید:
header('Content-Type: text/html; charset=utf-8');
$token= "249879980:AAHNdWnXjdq6Fw17NF81xXTtjA3xs19Sc6w";
$url= "https://api.telegram.org/bot".$token."/getupdates";
$update= file_get_contents($url);
$arrayUpdate= json_decode($update, true);
foreach ($arrayUpdate['result'] as $key) {
echo "update_id: ".$key['update_id']."<br>";
echo "user name: ".$key['message']['from']['username']."<br>";
echo "first name: ".$key['message']['from']['first_name']."<br>";
echo "text: ".$key['message']['text']."<br>";
echo "<br><br><br><br>";
}
نکته: قبلا از استفاده از getUpdate حتما getWebHook را غیر فعال کنید.
استفاده از متد getWebHook برای برنامه نویسی ربات:
در فوق برای استفاده از getUpdates باید این متد را در فواصل زمانی کوتاه با CronJob اجرا کنیم تا بتوانیم با کاربران در ارتباط باشیم. هر چند که گاهی ممکن است پاسخ دیر به کاربر برسد.
در پایین آموزش را با getWebHook ادامه میدهیم، هر چند که حتی اگر شما از getUpdates استفاده تفاوت چندانی در اسکریپتها وجود ندارد.
همانند اول آموزش با آدرس زیر فایل tlp.php را به عنوان اسکریپت دریافت کننده پیامهای کاربران معرفی میکنیم:
https://api.telegram.org/bot249879980:AAHNdWnXjdq6Fw17NF81xXTtjA3xs19Sc6w/setWebhook?url=https://hitos.ir/test/tlg.php
سورسی که در پیش رو دارید فایل tlg.php هاست است:
$message= file_get_contents("php://input");
file_put_contents("message.txt", $message);
تلگرام پیغامها را با متد POST برای فایل معرفی شده با getwebhook ارسال میکند. برای یافتن متدهای موجود در پیغام ارسالی به فایل tlg.php سورس بالا را استفاده میکنیم. "php://input"
کل پارامترهای دریافتی از post را دریافت میکند. در نهایت اطلاعات دریافتی در فایلی به نام message.txt در مسیر جاری ذخیره میشود. در پایین این مقدار خروجی را مشاهده میکنید:
{"update_id":818742456,
"message":{"message_id":23,"from":{"id":156173107,"first_name":"\u0633\u06cc\u062f \u0645\u0647\u062f\u06cc","username":"esmahdim"},"chat":{"id":156173107,"first_name":"\u0633\u06cc\u062f \u0645\u0647\u062f\u06cc","username":"esmahdim","type":"private"},"date":1471875367,"text":"\/aboutus","entities":[{"type":"bot_command","offset":0,"length":8}]}}
با بررسی این رشته JSON به ساختار زیر دست پیدا میکنیم:
header('Content-Type: text/html; charset=utf-8');
$message= '{"update_id":818742457,
"message":{"message_id":24,"from":{"id":156173107,"first_name":"\u0633\u06cc\u062f \u0645\u0647\u062f\u06cc","username":"esmahdim"},"chat":{"id":156173107,"first_name":"\u0633\u06cc\u062f \u0645\u0647\u062f\u06cc","username":"esmahdim","type":"private"},"date":1471876469,"text":"\/aboutus","entities":[{"type":"bot_command","offset":0,"length":8}]}}';
$message= json_decode($message, true);
echo "update_id: ".$message['update_id']."<br>";
echo "user name: ".$message['message']['from']['username']."<br>";
echo "first name: ".$message['message']['from']['first_name']."<br>";
echo "text: ".$message['message']['text']."<br>";
echo "<br><br><br><br>";
خروجی سورس بالا:
update_id: 818742457
user name: esmahdim
first name: سید مهدی
text: /aboutus
آشنایی با متد sendMessage:
متد sendMessage کار ارسال به کاربر را انجام میدهد:
https://api.telegram.org/bot[TOKEN]/sendMessage?chat_id=[CHAT_ID]&text=[TEXT]
در پایین سورس فایل tlg.php را به گونهای تغییر میدهیم که پس از دریافت کاربر پاسخ مناسب را بدهد:
header('Content-Type: text/html; charset=utf-8');
$message= file_get_contents("php://input");
$arrayMessage= json_decode($message, true);
$token= "249879980:AAHNdWnXjdq6Fw17NF81xXTtjA3xs19Sc6w";
$chat_id= $arrayMessage['message']['from']['id'];
$command= $arrayMessage['message']['text'];
if($command == '/start'){
$text= "سلام، به ربات ما خوش آمدید";
$url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chat_id."&text=".$text;
file_get_contents($url);
}else if($command == '/aboutus'){
$text= "این متن برای آشنایی شما با ماست";
$url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chat_id."&text=".$text;
file_get_contents($url);
}else{
$text= "دستور شما نا معتبر است";
$url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chat_id."&text=".$text;
file_get_contents($url);
}
دستور بالا به سادگی ابتدا پیام کاربر را دریافت، از آن chat_id و command را دریافت میکند و url مناسب را برای ارسال پیام به کاربر میسازد.
نکته: کامند /start
در تمامی روباتها به صورت پیشفرض وجود دارد، پس بهتر است برای آن یک متن نمایشی پیش فرض ایجاد کنیم.
نکته: البته شرطی هم در سورس وجود دارد که برای پاسخ دهی به دستورات نا معتبر است.
همانطور که در بالا دیدید میتوانید کامندهای دیگری برای بات خود تعریف کنید و برای هر کامند دستورات مناسب را ایجاد کنید.
اگر در نوشتن برنامه خود مشکل دارید سوالات خود را در بخش نظرات درج کنید.
باسلام و عرض خسته نباشید
بنده همه ی آموزش های مربوط به ربات تلگرامتون رو مطالعه کردم
بسیار عالی بودند...
الان مشکلی که برای من پیش اومده اینه که؛
اگر کاربر ارسال کرد: /name ====> براش بفرستم: نام خود را ارسال کنید
اگر کابر ارسال کرد: /family ====> براش بفرستم: نام خانوادگی ارسال کنید
حالا چجوری message هایی که کاربر در جواب درخواست ربات میفرسته ذخیره کنم؟
چون هر message که ارسال میشه، صفحه php ما از نو خونده میشه و کامند قبلی از بین میره.
راحت تر بگم: (با ارسال هر Message دستورات php مرحله به مرحله اجرا میشن ولی منتظر Message بعدی کاربر نمیشن)
با تشکر
سلام
سوال خوبی پرسیدید، ببینید وظیفه ربات تلگرام فقط انجام ارتباطه و ما بقی امور باید سمت سرور و هاست انجام بشند.
برای حل این امور می توان از دیتابیس استفاده کرد.
درآینده نه چندان دور آموزشی در این زمینه در سایت منتشر می کنم.
سلام
کد های php مربوط به متد getUpdates رو کجا وارد کنیم؟در مرورگر؟
منظورم این کد ها هستند
سلام دوست عزیز
این کدها باید در یک فایل PHP ذخیره و توسط یک وبسرور اجرا بشه.
برای آشنایی با PHP به این لینک مراجعه کنید: https://hitos.ir/go/49
سلام.
مطالب سایت شما عالی هست.
سوال من اینه که اگه بخواهیم متن ارسالی توسط ربات به کاربر دارای چند خط باشه باید چکار کنیم. یعنی پس از یک جمله به خط بعد بره و جمله دوم در خط بعدی نمایش داده بشه نه پشت سر هم
سلام
پاسخ سوالتون رو در بخش سوال و جواب سایت هیتوس مشاهده کنید: https://hitos.ir/question/12
سلام
من تمامی این کد ها رو وارد کردم ولی از ربات پاسخ نگرفتم
سلام
به احتمال زیاد مشکل از ارتبات با تلگرامه.
اگر مشکلی دارید می تونید از هاست معمولی و راه کار تلگرام هیتوس استفاده کنید: https://hitos.ir/telegram
سلام من واقعا از این آموزشتون خیلی ممنونم!!
من برای پروژه پایان ترمم دارم یه ربات بدنسازی طراحی میکنم. من کدهایی رو که باید فیلمو عکسو مشخصات طرف رو بگیره رو نوشتم ولی من چطوری یه نشونه ای بذارم که ربات بدونه الان کجای کاره ؟؟
(امیدوارم تونسته باشم منظورمو رسونده باشم! )
سلام
الگوریتمتون باید به شکلی پیاده سازی بشه که بر اساس شرط ها پیش بره و بعد از اجرای هر شرط از برنامه خارج بشه.
سلام آقای مهندس موسوی من میخوام ی ربات بنویسم که محاسبات مهندسی انجام بده مثل این ربات :@AsansorBot
میخواستم بدونم چه جوری هنچین ربات بنویسم اگه امکان داره جواب بدید
ممنون
سلام
تا چند وقت دیگه آموزشی در سایت منتشر می شه برای برنامه نویسی حرفه ای ربات های تلگرام.
منتظر باشید از طریق ایمیل اطلاع رسانی کنید.
سلام. برای دریافت کپشن تصویر یا چیز های دیگه که در فایل دریافت شده در قالب json دریافت شده باید چیکار کرد؟ دریافت یعنی اینکه بتونم تو یه متغیر ذخیره کنم
سلام
منتظر باشید در آینده در این زمینه آموزشی قرار می گیره که از طریق ایمیل به شما اطلاع رسانی خواهد شد.
سلام
واقعا از پاسخگوییتون ممنونم
یه سوال دیگه ک داشتم اینه ک تابع
همه ی آپدیت ها رو دریافت میکنه یا فقط اخرینشو؟
اگه که همه رو دریافت میکنه میشه بگین چجوری اخریو دریافت کنیم؟؟
سلام
با این دستور تمام اطلاعاتی که به صورت Post براتون ارسال شده رو می تونید دریافت کنید.
سلام
من از سی پنل استفاده می کنم.مثال هر دو روش رو روی هاستم امتحان کردم.تو روش getupdate رو لوکال جواب گرفتم اما رو هاست مقدار null رو بر میگردونه.فکر می کنم تابع file_get_contents غیرفعال شده.تو روش webhook پیام دریافت می شه و فایل متنی ساخته و مقداردهی می شه با درخواست جدید اما پاسخ برای کاربر ارسال نمی شه.
راهنمایی بفرمایید لطفا
سلام
شما می تونید از سرویس webhook هیتوس استفاده کنید. از مثال های موجود در این صفحه https://hitos.ir/telegram استفاده کنید و جز Token چیز دیگه ای رو عوض نکنید.
سلام
من میخوام ربات از کاربر لینک فایل صوتی دریافت کنه؛
بعد اونو توی هاست، دانلود کنه و بعد فایلش رو بفرسته به کاربر... (لینک بگیر ---> فایل بده)
لطفا راهنماییم کنید...
سلام
فرض کنیم با رباط تلگرام عکسی به کانال تلگرام فرستادم
حالا سوال اینه که چطوری میشه عکسی که به کانال فرستادم را در مرورگر وب ببینم؟
و یا حتی دانلود کنم
ممنون
سلام
در آینده نزدیک چنین آموزشی به سایت اضافه می شه.
سلام ممنون از آموزش خوبتون
من وقتی دستور آپدیت(getupdates) رو اجرا میکنم خروجی بهم NULL میده. ممنون میشم کمک کنید.
سلام
ممنون از ابراز لطفتون.
جواب سوال شما در بخش سوال و جواب هیتوس درج شد.
سلام
ببخشید من از https://hitos.ir/telegram این قسمت و وب هوک هیتوس استفاده کردم ولی باز مشکلم حل نشد.
نمیدونم چرا؟
ارور زیر رو میده، فکر کنم اصلا file_get_contents اجرا نمیشه که chat id بهم بده.
سلام
رباتتون رو ابتدا با کدهای موجود در آموزش پیاده سازی کنید و فقط TOKEN رو جایگذاری کنید. بعد مرحله به مرحله ربات رو تغییر بدید و ببینید عیب کار کجاست.
سلام
من دقیقا مرحله به مرحله جلو رفتم.
تو قسمت getUpdates هم هیچی چاپ نمیکنه.
البته echo $url رو توی کدم اضاف کردم بعد جواب داد نمیدونم چرا ولی تو قسمت webHook هر کاری میکنم chat id رو میگه خالیه.
مشکل از ریپورت بودنم میتونه باشه؟
چون ریپورت هستم فک کنم عمل نمیکنه.
سلام
پاسخ مشکل رو براتون ارسال کردم.
سلام با تشکر از توضیحاتتون
تو متد getupdates دستورات php رو کجا مینویسید و ذخیره میکنید؟
سلام
تمام دستورات PHP باید توسط یک یک وب سرور در سیستم شما و یا یک هاست اینترنتی اجرا شوند. لطفا این آموزش رو مشاهده کنید: https://hitos.ir/go/49
سلام خسته نباشید
چه جوری میشه چک کرد که فردی در کانال عضو شده تا دکمه هارو براش نمایش دهیم؟
سلام
این مباحث کمی پیچیده هستند، در آینده آموزشی از این مورد در سایت قرار می گیره.
سلام هر کاری می کنم توی error_log اینو میده
مقدور هست براتون کمکم کنید؟
سلام
امکان این قضیه وجود نداره، چون این خروجی فقط در صورتی نمایش داده می شه که شما این فایل رو توی مرورگر اجرا کنید.
اساس کار ربات به این شکله که از سمت سرور تلگرام یک Post به صورت Json دریافت می شه و سورس شما این فایل رو پردازش می کنه.
سلام مرسی از آموزش عالی
میشه یکم زود به سوالم جواب بدین!؟
قسمت sendMessage و میشه برای متد getupdate هم استفاده کرد؟
سلام
getUpdate تنها برای دریافت پیام هاست.
میدونم
منظورم اینه که وقتی از getUpdate استفاده کردم و پیام ها رو دریافت کردم،
با sendmessage میتونم جواب درخواست کاربرو بدم؟! یا حتما باید قبلش از getwebhook استفاده میکردم؟
بله می تونید از sendMessage استفاده کنید.
سلام ببخشید هیچکدوم از کدها برامن جواب نمیده یعنی یه کد دوخطی اجرا گرفتم مشکل از هاست واینا نیس وب هوک هم ست شده همه چیز اوکیه توکن رو عوض کردم ولی نمیدونم چرا درست نمیشه اگه میشه راهنمایی کنید با تشکر
سلام
1- از صحت URL بات مطمین بشید.
2- ربات خودتون رو به شکل صحیح در سرویس webhook هیتوس ثبت کنید.
3- در ابتدا فقط کدهای نمونه رو اجرا کنید.
با سلام
ممنون بابت اموزش خوبتون
بنده یک گزینه برای ارتباط کاربران با ادمین ربات در پنل ربات ساختم و میخوام که پیام کاربر رو همراه کد عددی و ایدی تلگرامش دریافت کنه
اگر براتون مقدور باشه این قسمت رو برام بنویسید یا نحوه نوشتنش رو کامل توضیح بدید
سلام
ببینید شما کد شناسه هر کاربر و آی دی اونو می تونید از Json ای که از سمت تلگرام دریافت و ذخیره کنید.
قبلا پیام دادم، ظاهرا مشغول هستید، فقط خواستم تاکید کنم که این قسمت از سورس رو به شدت نیاز دارم و از مطالب شما نتونستم استفاده کنم، اگر ممکنه ما این کار رو برام انجام بدید یا راهنمایی کنید
به ایمیلم ارسال کنید
سلام
مرسی از آموزش های عالیتون
من همه مراحل بالا رو انجام دادم و کاملا همه چی درست بود
ولی من بجای اسم یا آیدی میخوام مثلا وقتی ربات استارت میشه یا یه کاراکتر خاصی وارد میشه عکس پروفایل فردی که از ربات استفاده میکنه برای خودش ارسال بشه
میخواستم ببینم سورس این عمل چجوریه
بازم مرسی از سایت خوبتون
سلام
منتظر باشید نسخه جدید دوره آموزش ربات تلگرام به زودی منتشر می شه.
سلام
اینجانب از متد webhook استفاده کردم. و طبق آموزش جلو رفتم. پیام ست شدن رو هم گرفتم:
ok true
result true
description "Webhook was set"
اما وقتی تو ربات دستور رو اجرا می کنم چیزی به کاربر نشون نمیده
لطفا راهنمایی کنید
سلام
ورودی هاتون رو چک کنید، چون کار سختی نیست.
سعی کنید از کدهای نمونه تو سایت استفاده کنید.
سلام
من کد های سمپلی که تو آموزش هست رو اجرا میکنم
و فقط توکن رو جایگزین میکنم
اما در ارور لاگ توی cpanel این ارور رو دریافت میکنم :
سلام
باید سورستون رو دقیق کنید و ببینید عیب کار کجاست.
سلام
یه سوال:
برای ارسال عکس باید چکار کنیم؟
سلام
قسمت چهارم رو ببینید.
سلام
مشکل من هم حل شد.
برای راهنمایی دوستان باید بگم که آدرس سایت و صفحه مورد نظرتون رو با دقت تمام وارد کنید ، حتی www رو.
سلام، ممنون از آموزش هاتون، یه سوال داشتم من الان یه ربات نوشتم و با کد زیر نام کاربری و نام رو دریافت میکنم:
این مقادیر وقتی که کاربر روی دکمه استارک کلیک میکنه به درستی دریافت میشن ولی وقتی از دستورات دیگه استفاده میکنم و مثلا $username رو فراخانی میکنم درست نشون نمیده و مقدار خالی رو چاپ میکنه. میخواستم راهنمایی کنید که مشکلم از کجاست. ممنون
سلام mohammad جان:
لطفا سورس کاملتون رو بدون token ارسال کنید تا ببینم عیب کدهاتون کجاست.
خوب ببینید اگر هم من یک ربات ایجاد کنم و فرد عضو شوم چگونه میتونم شماره همراه طرف رو دریافت کنم که ببرم تو دیتابیس خودم و پیام مربوط به اونو واسش سند کنم با chat id که مقدار قابل ملاحظه ای یا شناسه ی ویزه ای دستم نمی یاد برای سرچ در کوئری بانک اطلاعاتی من ؟
چاره چیه
سلام مهرشاد جان:
ببینید دوست عزیز شما هیچ وقت نمی تونی شماره طرف رو متوجه بشی الا اینکه اون شماره رو بهت بده. دو روش برای ارتباط با کاربران هست یکی شناسه chat_id و دیگری نام کاربریه.
شما می تونید شماره رو مثلا از کاربر درخواست بدی و تو بانک اطلاعاتیت، شناسه کاربریت رو با شماره در یک ردیف ذخیره کنی.
در ضمن اگر برات مهمه که کاربر حتما شماره خودش رو وارد کرده باشه می تونی از تصدیق SMS استفاده کنی، به شکلی که یک پنل SMS با API دریافت کنی و وصلش کنی به ربات تلگرام.
سلام. منون از آموزشهای عالیتون.
من یکم گیج شدم، این کدهای پی اچ پی که برای متد getupdate نوشتید رو کجا باید وارد کنیم و بنویسیم. تلگرام از کجای اینارو فراخوانی میکنه؟؟؟؟
سلام. این متد رو توی مرورگرتون هم اگه اجرا کنید نتیجه رو دریافت می کنید.
تست کردم خود آیدیو به جای متن پاسخ فرستاد اما ریپلای نمیزنه
جهت اطلاع دوستانی که ممکنه با مشکل مشابه با مشکل من روبرو بشن باید عرض کنم که در پیام پاسخ مقدار پارامتر $message که مقدار فرم ایدیو در خودش داره و به sendMessage فرستاده میشه مقدار دهی نشده بود و خالی ارسال میشد که اضافه کردم و مشل حل شد
سلام خسته نباشید
شما میدونید چطور میتونم ردیف هایی که از دیتابیس دریافت میکنم بریزم در آرایه
مثلا محتوای این جدول هارو هر کدوم بره به یک آرایه
سلام رضا:
برای این بار باید از دستور mysqli_fetch_assoc استفاده کنید، اگر با این دستور آشنا نیستید یک سرچ ساده تو گوگل بزنید.
برنامه ای که تو صفحه گذاشتین با متد webhook نوشته شده
ممنون
سلام
چطوری در پیام ارسالی بین خطوط فاصله بندازم؟
مثلا وقتی مینویسم
"تست 1
تست 2
"
اینطوری ارسال میشه = "تست 1 تست 2"
من میخوام به شکل اولی ارسال بشه
از urlencode استفاده کنید:
سلام
من وقتی از getupdate استفاده میکنم هر بار از اول پیامارو چک میکنه،راه حلی پارامتری چیزی برای چک فقط پیامای جدید میشناسید؟
سلام. باید با id پیام ها رو پیمایش کنید.
سلام
من همه مراحل رو بدرستی در مورد webhook انجام دادم اما ارور دارم
وقتی که وضعیت webhook رو چک میکنم در توضیح ارور میگه:
چطور میتونم برطرفش کنم.
کجا این خطا رو دریافت کردید؟
در خود تلگرام هیچ واکنشی نشون نمیده
وقتی از تابع getWebhookInfo استفاده میکنم که وضعیت رو چک کنم این جواب رو میبینم.
من سورس و هاستتون رو ندارم تا بتونم بهتر راهنمایی کنم، ولی ورودی ها رو از اول چک کنید.
کلا در ابتدا ببینید webHook رو درست تعریف کردید؟ تو مرورگر آدرس زیر رو بزنید ببینید تعریف شده است یا خیر:
به جای [token] باید توکن خودتون رو بذارید.
من دقیقا از کدهای حودتون استفاده کردم و token رو جایگذین کردم.
آدرس webhook هم درست هستش و فعال
میشه مشکل از ssl باشه؟
آدرس URL رو با دقت بیشتری وارد کنید و امتحان کنید.
لطف میکنید در رابطه با اینلاین کوئری و اینلاین کیبرد هم مثال کوچیکی قرار بدید
همچنین ارسال لینک و فرمت دهی متن
سلام . چطوری میشه به چند نفر هممان در بات پیام ارسال کرد
ممنون میشم جواب بدین
سلام. دستورات رو به تعداد مورد نیاز اجرا کنید.
سلام من Ssl سایتم کامل درسته و پیام ها تحویل داده میشن
مثال اول کاملا درست کار می کنه و هر پیام که میاد توی فایل ذخیره میشه
اما مثال دوم که به کاربر جواب ارسال می کنه کار نمی کنه . لینک جواب رو دستی تو مرورگر وارد کردم کار کرد ورژن php هم 4 هست .
سلام. سورستون رو مجددا بررسی کنید، اگر می خواین سرستون رو برام بذارید من یه نگاهی بهش بندازم.
با سلام
امکانش هست سورس این قسمت رو ارسال کنید؟
سلام
سورس آخر کامل است.
من وب هوکو ست کردم. از این کد هم استفاده کردم, ولی یازم کار نميکنه....
باید ورودی ها رو دوباره چک کنید و ببینید کجا کارتون اشکال داشته.
با سلام
با تشکر از آموزش خوبتون و خسته نباشید
من تمام مراحلی که گفته بودین رفتم با setWebhook هم در تلگرام ثبتش کردم و OK هم داد ولی کلا وقتی که در تلگرام دستور به بات می فرستم تو هاست فایل را نمی خونه دو تا تیک کنار پیغام فرستاده شده میزاره.وقتی قسمت URL در setWebhook را توی براوزر مینویسم اجرا میشه. توی سایت هم SSL/TLS را نصب کردم.
ورودی هاتون رو چک کنید و سعی کنید با مثال های پایه برید جلو و ببینید تو دستورات ساده هم می تونید با ربات کار کنید یا خیر.
سلام . ممنون بابت آموزش خوبتون
من کارهایی که گفتید رو انجام دادم ولی وقتی از setwebhook استفاده میکنم فقط یه پیغام بهم میده که این وب هوک وجود داره
برای گرفتن پیام ها از getwebhook استفاده کردم که خطا میده این متود وجود نداره . میشه راهنمایی کنید؟
سلام
لطفا ابتدا برای شروع کد نویسی از کدهای موجود تو آموزش استفاده کنید و فقط Token رو تغییر بدید تا کد نویسی ربات دستتون بیاد.
مشکل حل شد ممنون
مشکل از ssl سایت بود که key نامعتبر بود
سلام من همه کارها رو کردم و ربات رو به هاست وصل کردم ولی وقتی به ربات پیام میدم در هاست یه فایل error_log ایجاد میشه و دراون این جملات رو نوشته
لطفا راهنمایی کنید باتشکر.
سلام
باید نمونه سورستون رو ببینم.
سلام،
کدهای php رو کجا باید بزنیم؟
سلام
این ها کدهای PHP هستند، اگر با این برنامه نویسی آشنا نیستید مطلب https://hitos.ir/go/49 رو به طور کامل بخونید.
سلام خسته نباشید
آموزش بسیار مفیدی بود و استفاده کردم ولی یکجا گیر کردم
برای اینکه آخرین id جدید ترین پیام رو بگیرم چه راهکاری می دهید
چون با هر بار رفرش در فایل php یا اجرا در cronjob کلیه دستورات از قبل ارسال شده در ربات هم دوباره پردازش میشه
در صورتی که ما همیشه جواب آخرین پیام را در ربات میدهیم
سلام
استفاده از متد getUpdate به این دلیل پیچیده است که باید id آخرین پیام دریافتی رو ذخیره کنید تا اشتباه نشه. برای ذخیره اطلاعات می تونید از دیتابیس استفاده کنید.
سلام خسته نباشید
من به کمک آموزش های شما یک ربات درست کردم و کد نویسی کردم چون ssl ندارم از getupdate استفاده کردم و کران جاب
الان توی کرون جاب فایلم هر 1 ثانیه یکبار اجرا میشه
و آخرین دستور کاربر توی ربات گرفته میشه(getUpdates?offset=-1) و پردازش میشه و نتیجش بهش ارسال میشه
منتها ایرادی که داره اینه که اگر کاربر پیام جدیدی وارد نکنه هم همینجوری هر 1 ثانیه آخرین رکورد پردازش میشه و به کاربر نتیجش ارسال میشه
راهکاری برای این دارید؟
سلام
شما جواب رو برای هر پیام با شناسه منحصر به فرد فقط یک بار ارسال کنید.