در آموزش قبلی یادگرفتید که چطور نوع پیام ارسالی کاربر رو تشخیص بدید. یعنی اینکه بفهمید کاربر وویس ارسال کرده یا صدا یا تصویر و یا یک ویدئو. در ادامه و تکمیل اون آموزش امروز یادمیگیرید که چطور در صورت نیاز موارد ارسالی کاربر رو روی سرورتون ذخیره کنید.
توی آموزش قبلی گفتیم که برای فهمیدن نوع مورد ارسالی کاربر از متد getUpdateType استفاده میکنیم؛ این متد برای تصاویر عبارت photo برای صدا audio و برای ویدئو video رو برمیگردونه. حالا برای ذخیره تصاویر به شکل زیر عمل میکنیم:
$msgType = $telegram->getUpdateType(); if($msgType=='photo'){ $file_id = $telegram->bigPhotoFileID(); $file = $telegram->getFile($file_id); $file_path = $file['result']['file_path']; $full_path ='https://api.telegram.org/file/bot'.$bot_id.'/'.$file_path; file_put_contents('files/image.jpg',file_get_contents($full_path)); $content = array('chat_id' => $chat_id, 'text' => 'photo saved SuccessFully :)'); $telegram->sendMessage($content); }
خط اول تشخیص نوع پیام ارسالی کاربر
خط دوم شرط تعریف میکنیم که اگر نوع پیام ارسالی photo بود کدهای بعدی اجرا بشه
خط سوم با استفاده از متد جدید که بنده اضافه کردم به کلاس یعنی متد bigPhotoFileID فایل آیدی با کیفیت ترین نسخه از اون عکس رو توی متغیر قرار میدیم.
تلگرام اینجوری عمل میکنه که بعد از ارسال هرچیزی توسط کاربر توی ربات، اول اون رو توی سرورهای خودش آپلود میکنه و بعد یک فایل آیدی منحصر بهفرد برای دسترسی به اون فایل در اختیار برنامه نویس قرار میده.
خط چهارم با استفاده از متد getFile که از متدهای رسمی api خود تلگرامه، اطلاعات کلی اون فایل رو میگیریم.
خط پنجم مسیر کوتاه اون فایل روی سرور تلگرام رو توی متغیر $file_path قرار میدیم و در خط ششم با استفاده از فرمولی که تلگرام در اختیارمون قرار داده (فرمول زیر) مسیر کامل فایل مورد نظرمون رو روی سرورهای تلگرام پیدا میکنیم.
https://api.telegram.org/file/bot<token>/<file_path>
حالا که مسیر کامل در اختیار مونه، ذخیره کردن تصویر به راحتی امکان پذیر هستش. من اینجا از متدهای file_get_contents و متد file_put_contents زبان php برای ذخیره تصویر ارسالی روی سرور استفاده کردم. شما میتونید از دستورهای دیگه ای مثل copy هم استفاده بکنید.
کدهای ذخیره ویدئو، فایل موسیقی، وویس و تصویر بر روی کانال تلگرامی قرار داده شد.
نکته اول: برای ذخیره فایلها محدودیت 20 مگابایتی وجود داره
نکته دوم: هر لینکی که در اختیارتون قرار داده میشه تا زمانی که من دارم این آموزش رو مینویسم فقط یک ساعت اعتبار داره و اگه تو این یکساعت فایل رو روی سرور ذخیره نکنید باید دوباره لینک رو تولید کنید.
نکته سه: برای فایلهای موسیقی موقع ذخیره پسوند mp3، فایلهای وویس پسوند ogg و ویدئوها ترجیها mp4 قرار بدید. (طبق تجربه)
برای موارد دیگه document، فایلهای (zip, rar, doc, xls,...) باید نسبت به فایلی که میخواین از کاربر بگیرید پسوندها رو اضافه کنید.