آموزش مقدماتی ربات تلگرام - تعاریف اولیه به زبان php

آموزش تعاریف اولیه ربات تلگرام

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

برای ساختن یک ربات تلگرام ،‌ باید رباتمان را در @botFather ثبت نام بکنیم . توجه کنید که ما فقط ربات را می سازیم ( ثبت نام می کنیم ) و اطلاعات ظاهری ربات رو تغییر میدیم و بات فادر درباره ی هسته ی ربات کاری انجام نمی دهد . در پایان ثبت نام botfather به ما یک token می دهد .

این توکن بسیار مهم هست و نباید گم شود و یا در دسترس هر کسی قرار بگیرد . ما از طریق این توکن به تمام اطلاعات ربات دسترسی داریم و هر کاری میتوانیم انجام دهیم !

 

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

برای دریافت اطلاعات جدید ما ۲ راه حل داریم . راه حل اول از طریق WebHook بوده و راه حل دوم از طریق Long Polling است .

۱- WebHook :

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

۲- Long Polling :

در این روش تلگرام اطلاعات را برای ما ارسال نمی کند بلکه ما مثلا هر ۵ ثانیه با استفاده از cUrl ، اطلاعات جدید را دریافت میکنیم . خوبی این روش این است که ما حتی روی لوکال هاست هم میتوانیم یک ربات داشته باشیم و بدی این کار این است که ما مثلا اگر هر ۵ ثانیه یک درخواست بفرستیم ، احتمال اینکه در خیلی از درخواست ها ،‌آپدیت جدیدی وجود نداشته باشد بسیار است و این درخواست ها اضافه اند و فقط سرور را آزار میدهند ! ما با این روش شروع می کنیم .

برای دریافت اطلاعات جدید از طریق Long Polling ما باید یک از متد getUpdates استفاده کنیم . اما بهتر است اول با متد ها آشنا شویم .

 

آشنایی با متد ها در ربات تلگرام

متد getMe :

برای صدا زدن یک متد و دریافت اطلاعات باید اطلاعات صفحه ایی را با الگوی
https://api.telegram.org/bot<token>/METHOD_NAME. :
مثل نمونه زیر :

https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe

استفاده کنید .

برای مثلا وقتی آدرس بالا را در مرورگر وارد کنی (البته باید جای توکن را با توکن ربات خودتون عوض کنید ) یه همچین پیامی در صفحه مرورگرتون ظاهر میشه :
{"ok":true,"result":{"id":292024702,"first_name":"\u0627\u0645\u06cc\u0646 \u0641\u0631\u0627\u0633\u062a","username":"Amin_Ferasat_bot"}}

 

در قسمتی که نوشته first_name نام ربات من فارسیه و چون نمیتونه فونت فارسی را پشتیبانی کند اسم را به این شکل کد نمایش داده است .

اگر اسم ربات انگلیسی بود مثلا ferasat bot به این شکل پیام می آمد :
{"ok":true,"result":{"id":292024702,"first_name":"Ferasat bot","username":"Amin_Ferasat_bot"}}

ما در این دستور بالا از متد getMe استفاده کردیم . برای کسب اطلاعات بیشتر در مورد این متد از سایت دکیمونت تلگرام هم می تونید استفاده کنید https://core.telegram.org/bots/api#getme.

این متد هموین طور که دیدید اطلاعات ربات ما را نشون میده

همانطور که می بینید ما یک JSON داریم . در اصل تمام دریافتی های ما از تلگرام JSON می باشد .

 

متد getUpdates :

خوب حالا از متد getUpdates استفاده می کنیم .  این متد آخرین ارسال ها برای ربات را نشون میده .

 

https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getUpdates

 

با زدن آدرس بالا در مرورگرتون پیامی شبیه زیر براتون ظاهر میشه البته باید شما قبلش به ربات رفته و پیامی را برای ربات خود بفرستید . مثلا Salam با فارسی سلام  ولی در مرورگر فارسی را به صورت کد نشون میده .

{"ok":true,"result":[{"update_id":136526596,
"message":{"message_id":76,"from":{"id":294748992,"first_name":"Amin","last_name":"Ferasat","username":"AminFerasat","language_code":"fa"},"chat":{"id":294748992,"first_name":"Amin","last_name":"Ferasat","username":"AminFerasat","type":"private"},"date":1496673433,"text":"\u0633\u0644\u0627\u0645"}},{"update_id":136526597,
"message":{"message_id":77,"from":{"id":294748992,"first_name":"Amin","last_name":"Ferasat","username":"AminFerasat","language_code":"fa"},"chat":{"id":294748992,"first_name":"Amin","last_name":"Ferasat","username":"AminFerasat","type":"private"},"date":1496673527,"text":"saal"}},{"update_id":136526598,
"message":{"message_id":78,"from":{"id":294748992,"first_name":"Amin","last_name":"Ferasat","username":"AminFerasat","language_code":"fa"},"chat":{"id":294748992,"first_name":"Amin","last_name":"Ferasat","username":"AminFerasat","type":"private"},"date":1496675969,"text":"Hi amin"}}]}

خوب این کد ظاهر شده  را بخونید. هر آپدیت یه آدی داره هر پیام از طرف هر شخص یه آیدی داره message_id و خود مشخصات شخص فرستند را هم میده  “id”:294748992,” آیدی شخص “first_name”:”Amin” نام کوچک شخص و …..

میتونید از این ها در کد نویسی استفاده کنید و هر مقدار را در یک متغیر بریزید و در صفحه به نمایش در بیارید . کم کم این ها را هم میگیم .

 

متد sendMessage :

متد فرستادن پیام در تلگرام sendmassage

متد فرستادن پیام در تلگرام sendmassage

 

برای استفاده از این متد طبق دکیمنت سایت تلگرام ( به لینک روبرو برید : sendMessage )  دو پارامتر لازم هست . اولی chat_id که مشخص کننده اینکه با کدام چت هست  و دوم text متنی هست که قرار شما بفرستید برای اون شخص با chat_id منحصر به فردی که داره .

خوب  برای فرستادن عین الگویی زیر در نوار آدرس مرورگرتون بنویسید :
https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendMessage?chat_id=294748992&text=hi
با زدن این ادرس در مرورگر پیام hi به کاربر فرستاده میشه. یادتون باشه حتما عین الگوی بالا بنویسید بعد از متد sendMessage علامت سوال و بعد مقدار chat_id را را مشخص کنید که آید چت کاربر با ربات شماست و بعد زا از اون هم یه & و مقدار text را مشخص کنید که متنی است که قرار بفرستید . مثلا در بالا من کلمه hi را فرستادم .

 

متد forwardMessage :

با استفاده از این متد می توانید یک متن برای برای فردی دیگر forward نمایید .

متد forwardMessage در تلگرام

متد forwardMessage در تلگرام

 

chat_id :‌آیدی شخص یا گروهی که می خواهین پیغام برای آن forward شود .به جای آیدی از یوزرنیم به صورت channelusername@ استفاده کنید.
from_chat_id :‌آیدی شخص یا گروهی که پیغام شما در آن قرار دارد و میخواهید آن را forward کنید .به جای آیدی از یوزرنیم به صورت channelusername@ استفاده کنید.
disable_notification : اگر true باشد پیغام را به صورت Silent و بدون notification برای طرف ارسال می کند .
message_id :‌ آیدی مسیج مورد نظر که قصد forward کردن آن را دارید.

 

متد sendPhoto :

با استفاده از این متد می تواند در گروه ,کانال و یا یه شخص خاصی عکس ارسال نمایید .

chat_id :‌آیدی شخص یا گروهی که می خواهین پیغام برای آن forward شود .به جای آیدی از یوزرنیم به صورت channelusername@ استفاده کنید.
photo :‌عکسی که قصد ارسال آن را دارید . اگر این عکس قبلا در سرورهای تلگرام (Telegram)ذخیره شده می توانید آیدی آن را ارسال کنید و یا آن را دوباره آپلود نمایید .
caption :‌ می توانید برای عکس هایی که قبلن آپلود شده وfile_id آن را دارید یک عنوان یاcaption قرار دهید . این عنوان می تواند ببین۰-۲۰۰ کاراکتر باشد.
disable_notification :‌اگر true باشد پیغام را به صورت Silent و بدون notification برای طرف ارسال می کند .
reply_to_message_id :‌ اگر می خواهید عکسی که ارسال می کنید در جواب یک message دیگر باشد , آیدی آن را با استفاده از این پارامتر مشخص می کنید .
reply_markup : این پارامتر برای اضافه کردن کیبورد دلخواه به ربات می باشد که کاربر با استفاده از این کیبورد و کلیدهای که ما ایجاد کردیم قادر به ارتباط به ربات باشد

 

متد  sendAudio :
این متد برای ارسال فایل های صوتی (audio files) می باشد  . اگر می خواهید فایل ها در تلگرام کاربر پخش شود باید نوع آن Mp3‌باشد . در حال حاضر فایل صوتی می تواند تا حجم ۵۰ MBB باشد و ممکن است این محدودیت بعدن تغییر کند.

chat_id :‌آیدی شخص یا گروهی که می خواهین پیغام برای آن forward شود .به جای آیدی از یوزرنیم به صورت channelusername@ استفاده کنید.
audio :‌فایل صوتی  که قصد ارسال آن را دارید . اگر این فایل قبلا در سرورهای تلگرام ذخیره شده می توانید آیدی (file_id ) آن را ارسال کنید و یا آن را دوباره آپلود نمایید
duration :‌مدت زمان فایل صوتی به ثانیه
performer :‌سازنده
title :‌نام ترک
disable_notification :‌اگر true باشد پیغام را به صورت Silent و بدون notification برای طرف ارسال می کند .
reply_to_message_id :‌ اگر می خواهید فایل صوتی  که ارسال می کنید در جواب یک message دیگر باشد , آیدی آن را با استفاده از این پارامتر مشخص می کنید .
reply_markup : این پارامتر برای اضافه کردن کیبورد دلخواه به ربات می باشد که کاربر با استفاده از این کیبورد و کلیدهای که ما ایجاد کردیم قادر به ارتباط به ربات باشد.
متد sendDocument :
با استفاده از این متد می توانید فایل های عمومی را ارسال کنید . تقریبا همه نوع پسوند فایلی مجاز است و حداکثر حجم آن باید ۵۰ مگابایت باشد که ممکن است بعدا تغییر کند  .

پارامترهای این متد دقیقا مانند پارامترهای قبلی است که توضیح داده شده .

 

 

متد sendSticker :
از این متد می توانید برای ارسال استیکر استفاده کنید .

sticker :‌ استیکر مورد نظر است که می خواهید ارسال کنید . اگر این عکس قبلا در سرورهای تلگرام  (Telegram) ذخیره شده می توانید آیدی آن را ارسال کنید و یا آن را دوباره آپلود نمایید .
chat_id :‌آیدی شخص یا گروهی که می خواهین پیغام برای آن forward شود .به جای آیدی از یوزرنیم به صورت channelusername@ استفاده کنید.
disable_notification :‌اگر true باشد پیغام را به صورت Silent و بدون notification برای طرف ارسال می کند .
reply_to_message_id :‌ اگر می خواهید فایل صوتی که ارسال می کنید در جواب یک message دیگر باشد , آیدی آن را با استفاده از این پارامتر مشخص می کنید .
reply_markup : این پارامتر برای اضافه کردن کیبورد دلخواه به ربات می باشد که کاربر با استفاده از این کیبورد و کلیدهای که ما ایجاد کردیم قادر به ارتباط به ربات باشد.
متد  sendVideo
از این متد می توانید برای ارسال فایل های ویدیویی استفاده کنید .فعلا تلگرام  (Telegram)  از فایل های ویدیویی با پسوند mp4 پشتیبانی می کند و حداکثر حجم آنها می تواند ۵۰۰ مگابایت باشد.

chat_id :‌آیدی شخص یا گروهی که می خواهین پیغام برای آن forward شود .به جای آیدی از یوزرنیم به صورت channelusername@ استفاده کنید.
video :‌فایل ویدیویی  که قصد ارسال آن را دارید . اگر این فایل قبلا در سرورهای تلگرام ذخیره شده می توانید آیدی (file_id ) آن را ارسال کنید و یا آن را دوباره آپلود نمایید
duration :‌مدت زمان فایل ویدیویی به ثانیه
width :‌width فایل ویدیویی مورد نظر
height : height فایل ویدیویی مورد نظر
title :‌نام ترک
disable_notification :‌اگر true باشد پیغام را به صورت Silent و بدون notification برای طرف ارسال می کند .
reply_to_message_id :‌ اگر می خواهید فایل صوتی  که ارسال می کنید در جواب یک message دیگر باشد , آیدی آن را با استفاده از این پارامتر مشخص می کنید .
reply_markup : این پارامتر برای اضافه کردن کیبورد دلخواه به ربات می باشد که کاربر با استفاده از این کیبورد و کلیدهای که ما ایجاد کردیم قادر به ارتباط به ربات باشد.
متد sendVoice :
این متد هم برای ارسال فایل های صوتی (audio files )‌ می باشد . در واقع فایل هایی مد نظر هست که با گوشی ضبط شده و برای کاربر ارسال می کنیم .

توضیحات و پارامترهای این متد هم مانند متد sendAudio می باشد که بالاتر توضیح داده شده است .

 

 

متد sendLocation :
از این متد برای ارسال یک نقطه روی نقشه می توانید استفاده کنید .

chat_id :‌آیدی شخص یا گروهی که می خواهین پیغام برای آن forward شود .به جای آیدی از یوزرنیم به صورت channelusername@ استفاده کنید.
latitude :‌ عرض جغرافیایی مورد نظر
longitude :‌طول جغرافیایی مورد نظر
disable_notification :‌اگر true باشد پیغام را به صورت Silent و بدون notification برای طرف ارسال می کند .
reply_to_message_id :‌ اگر می خواهید فایل صوتی  که ارسال می کنید در جواب یک message دیگر باشد , آیدی آن را با استفاده از این پارامتر مشخص می کنید .
reply_markup : این پارامتر برای اضافه کردن کیبورد دلخواه به ربات می باشد که کاربر با استفاده از این کیبورد و کلیدهای که ما ایجاد کردیم قادر به ارتباط به ربات باشد.

 

 

 

خوب این پایان آموزش اول بود .

در جلسه بعدی انشاالله همین دستورات را درون فایل php برده و با استفاده از دستورات برنامه نویسی php از روی لوکال هاست  با همین متد ها کار و تمرین می کنیم.

 

منابع این مقاله :
۱ – Telegram Bot API

۲ – برنامه نویسی به طعم توت فرنگی mhr-developer.com

۳ – وب سایت alihossein.ir

برای دانلود فایل واردشوید
ورود ثبت نام
برچسب ها :

1 دیدگاه بر “آموزش مقدماتی ربات تلگرام – تعاریف اولیه”

  1. پریسا گفت:

    سلام
    آقا میشه از این آموزش ربات تلگرام فیلم هم بدید ؟
    خوب بودا ولی ویدئویی خیلی بهتره

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Time limit is exhausted. Please reload CAPTCHA.