از جمله سوالاتی که زیاد پرسیده میشه از من توی بحث برنامه نویسی برای رباتهای تلگرام، اینه که چطوری یه عکس از کاربر بگیریم؟ یا چطور یه فایل که کاربر میفرسته رو ذخیره کنیم؟
تو آموزش امروز من کلیت کار تشخیص و دریافت انواع فایلهای ارسالی توسط یوزر توی ربات رو توضیح میدم. و مثل همیشه تاکید میکنم که شما باید حداقلهای برنامه نویسی رو بدونید چون اینجا فقط و فقط داریم آموزش کار با API تلگرام رو میدیم و بقیه موارد ازش صحبتی نمیشه.
فرض میگیریم رباتی دارید که میخواین کاربر یا خودتون هر عکسی یا فایلی رو ارسال میکنه یه متن (کَپشن) اضافه کنید و دوباره به خودش برگردونید؛ مثل ربات درجنویس که برای مخفی کردن هویت افراد توی ارسال فایلها استفاده میشه.
اولین مرحله، تشخیص اینه که کاربر عکسی(یا فایلی) ارسال کرده یا نه؛ برای این کار ما از یک متد با نام getUpdateType توی کلاس php که معرفی کردیم استفاده میکنیم؛ این فانکشن نوع پیام ارسالی رو به ما برمیگردونه. به کد زیر توجه کنید:
$msgType = $telegram->getUpdateType();
خروجی متد که توی متغیر $msgType قرار میگیره یکی از موارد زیر هستش:
photo, audio, video, document, voice, location, contact, message
و البته چند مورد دیگه که فعلا استفاده ای نداریم و بعد خودتون میتونید اونها رو بررسی کنید. پس به راحتی با استفاده از این متد شما میتونید نوع پیام ارسالی کاربر رو تعیین کنید و بعد بر اساس اون تصمیم بگیرید که چیکار کنید.
توی مثال فعلی ما میخوایم عکسها رو تشخیص بدیم. پس دستور زیر رو مینویسیم:
if($msgType=='photo'){ // commands here
}
دستور بالا فقط در صورتی محتوای بلوکش اجرا میشه که کاربر یک عکس ارسال و یا توی ربات فوروارد کرده باشه؛ بعد از اینکه عکس ارسال شد نوبت اینه که عکس رو بگیریم و مثلا تگ ربات رو اضافه کنیم بهش و به کاربر برگردونیم؛ برای اینکار ما به فایل آیدی عکس (یا هر نوع فایلی که کاربر ارسال کرده) نیاز داریم.
توی کلاس فعلی که ازش استفاده میکنیم این موارد برای دسترسی وجود نداشت و بنابراین من خودم چندتا تابع نوشتم و به فایل اضافه کردم و توی گیتهاب هم ارسال کردمشون تا در صورت صلاحدید صاحب اصلی، اون رو به فایل اصلی اضافه کنه. بنابراین برای دریافت فایل آیدی تصویر، از تابع جدید زیر استفاده میکنیم:
$file_id = $telegram->photoFileID();
حالا که فایل آیدی رو دارید کافیه اون رو با توابع مربوطه که توی آموزشهای قبلی توضیح دادیم برای یوزر با اضافه کردن یه متن دلخواه دوباره برگردونید و یا اون فایل آیدی رو توی دیتابیس برای استفاده مجدد در آینده ذخیره کنید.
سورس کدهای کامل این آموزش در کانال قرار داده شدند.