آموزش تصویری کدنویسی ربات تلگرام دریافت شماره موبایل و لوکیشن

برای اینکه بتونید شماره موبایل یا لوکیشن کاربر رو در ربات تلگرام دریافت کنید یک راه بیشتر وجود نداره و اون هم استفاده از reply_markup هست یعنی همون کیبورد ساده خودمون. اول از همه خوبه که بدونید منظور از شماره موبایل همون شماره ای هست که کاربر باهاش در تلگرام عضو شده و دوم اینکه هنگام دریافت تلگرام به کاربر در یک پیامی از کاربر تاییده میگیره که آیا تایید میکنی شماره موبایلت ارسال بشه یا نه پ به هیچ وجه از کلمات دروغین روی عنوان کیبورد ها استفاده نکنید. این موارد برای دریافت لوکیشن هم صدق میکنه.

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

خب اول بیاید کد های پیش نیازمون رو بنویسیم تا پیام رو از کاربر دریافت کنه و توکن ربات رو قرار بده و... همون کارهایی که در آموزش قبل انجام دادیم اینجا هم نیاز هست که انجام بدیم.

نوشتن کد های پیش نیاز
نوشتن کد های پیش نیاز


توابع پیش نیاز جهت سهولت کار
توابع پیش نیاز جهت سهولت کار


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

ساخت کیبورد ارسال شماره موبایل و لوکیشن
ساخت کیبورد ارسال شماره موبایل و لوکیشن



خب این همون کیبورد ساده هست با این تفاوت که پارامتر های اختیاری اون رو پر کردیم و اون رو از حالت یک دکمه که صرفا متن خالی رو برای ربات ارسال میکرد خارج کردیم. حالا کاربر با زدن هرکدوم از این دکمه ها اول این پیام رو مشاهده میکنه. اگه به آرایه ساخته شده برای کیبورد دقت کنید هر دکمه خودش به شکل یک آرایه هست و مجددا اون رو در یک آرایه دیگه گذاشتیم چرا؟ چون تعریف تلگرام از کیبورد این هست آرایه ای از آرایه های کیبورد! یعنی هر دکمه خودش ساختار یک آرایه رو داره :) شاید به ظاهر یکم گیج کننده باشه اما دیگه همینه که هست :)


وقتی کاربر روی /start زو ما بهش کیبورد اصلی رو بر میگردونیم
وقتی کاربر روی /start زو ما بهش کیبورد اصلی رو بر میگردونیم


اگه نه بزنه هیچ اتفاقی صورت نمیگیره و پنجره بسته میشه (فرقی نمیکنه چه دریافت شماره موبایل چه لوکیشین) اما اگر بله رو بزنه این پاسخ ارسال میشه.

برای شماره موبایل

دریافت شماره موبایل از کاربر و برگرداندن آن در یک پیام برگشتی
دریافت شماره موبایل از کاربر و برگرداندن آن در یک پیام برگشتی


وقتی دکمه ارسال لوکیشن رو بزنه به همراه نقشه ارسال میشه، البته این چیزیه که کاربر می بینه و شما فقط طول و عرض جغرافیایی رو دریافت میکنید.

دریافت لوکیشن از کاربر و نمایش آن در یک پیام برگشتی
دریافت لوکیشن از کاربر و نمایش آن در یک پیام برگشتی


حالا باید این اطلاعات رو دریافت کنید و فیلد مورد نظر خودمون که همون شماره موبایل و طول، عرض جغرافیایی هست رو برای مراحل بعدی برداریم. تلگرام شماره موبایل رو در متغییر contact و لوکیشن رو در متغییرlocation قرار میده پس کافیه چک کنیم چنین متغییری در پاسخ ارسال شده از api تلگرام وجود داره یا نه پس این کد رو می نویسیم که اگر بود دریافت کنیم و اگر هم نبود یا به کاربر مجددا بگیم که باید حتما ارسال کنی و یا کلا کار های دیگه رو انجام بدیم.


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

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

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