ویرگول
ورودثبت نام
Mohsen
Mohsen
خواندن ۲ دقیقه·۶ سال پیش

دانلود و کار با تصاویر پروفایل کاربر از طریق ربات تلگرام

همین انتخابات ریاست جمهوری اخیر اگر شما هم به چشمتون خورده باشه، یه روبات توی تلگرام بود که با زدن دکمه /start عکس پروفایلتون رو میگرفت و بعد سمت سرور با دستکاری و ویرایش عکس یه شعار حمایتی روش میزد و نتیجه رو برمیگردوند برای کاربر.

به همین راحتی با رباتهای تلگرام میشه کمپینهای تبلیغی اینچنینی راه انداخت و یا خیلی کارای دیگه. مثلا میشه عکسهای پروفایل کاربر رو گرفت با هم ترکیب کرد و... یا اگه حرفه ای باشید با پردازش تصاویر به افراد گفت با توجه با تصاویر پروفایلشون چند درصد مثلا غمگین هستن!

کسب درآمد از طریق ربات‌نویسی تلگرام

کدهای امروز رو راحت میشه فروخت و ازش کسب درآمد کرد؛ چون همچین کارهایی استفاده های خاص خودش رو داره و اگه یه مقدار شم بازاریابی داشته باشید میتونید بفروشید به افراد دیگه و من اینجا رایگان آموزشش رو میذارم :)

شروع

برای درک این آموزش انتظار میره که شما آموزشهای قبلی رو کامل مطالعه کرده باشید، در غیر اینصورت اول آموزشهای پیشین رو دنبال کنید.

دانلود عکس پروفایل کاربرها از طریق ربات به چندتا کار نیاز داره که باید مرحله به مرحله انجام بشه؛ مرحله اول با استفاده از متد getUserProfilePhotos مشخص میکنیم که آیا کاربر روی پروفایلش عکسی گذاشته یا نه، یعنی تعداد عکسهای پروفایل کاربر رو میگیریم.

$content = array('user_id' => $user_id);
$prof = $telegram->getUserProfilePhotos($content);

این متد در صورتی که با موفقیت اجرا بشه یه آرایه برمیگردونه که این آرایه شامل دو خانه هستش. اسم خانه اول OK و اسم خانه دوم result. (یه مقدار بحث فنی میشه و اگه متوجه نمیشید هم اشکال نداره).

ساختارش تقریبا این شکلیه که بعضی از خانه های آرایه خودشون هم آرایه هستن، یعنی تو در تو میشه:

$prof['ok'=>TRUE, [' result ' => 'total_count', ['photos' =>...]];

همونطور که میبینید تعداد تصاویری که کاربر روی پروفایل داره از طریق خانه total_count مشخصه؛ حالا باید این رو توی یه متغیر ذخیره کنیم تا بعد بهش دسترسی داشته باشیم، پس خط زیر رو اضافه میکنیم:

$photo_count = $prof['result']['total_count']; // تعداد تصاویر پروفایل

بعد از اینکه تعداد پروفایل کاربر مشخص شد نوبت پیدا کردن اسم و مسیر ذخیره ی اون پروفایل روی سرور تلگرام هستش. برای این کار باید از متد getFile استفاده بکنیم؛ اما قبلش، از طریق آرایه ی قبلی که توی متغیر $prof ذخیره کردیم باید اسم هر عکس رو نسبت به موقعیت مکانیش (Index) توی آرایه photo پیدا کنیم و اون رو برداریم.

بر فرض از اونجایی که تلگرام سه کیفیت از هر عکس توی آرایه photo برمیگردونه 160*160 - 320*320 - 640*640 اگه بخوایم کیفیت 640*640 اولین عکس کاربر رو برگردونیم باید اینجوری بهش دسترسی پیدا کنیم:

$file_id = $prof['result']['photos'][0][2]['file_path'];

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

$file_id = $prof['result']['photos'][0][2]['file_id'];

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

https://api.telegram.org/file/bot<token>/<file_path>

یعنی برای مثال بالا مسیر کامل این میشه:

https://api.telegram.org/file/BOT_TOKEN/photos/file_17501.jpg

حالا کافیه با دستوراتی مثل file_get_contents تصویر روی سرور خودمون ذخیره، دستکاری و مجدد به کاربر ارسال کنیم. به همین راحتی!

بحث یه کم پیچیدست پس بهتره حتما کدهایی که توی کانال قرار میدم رو مطالعه بفرمایئد.

آدرس کانال: https://t.me/howCreateBot

لینک مفید:

https://stackoverflow.com/questions/31096358/how-do-i-download-a-file-or-photo-that-was-sent-to-my-telegram-bot

telegram profiletelegram botربات تلگرامآموزش ربات نویسیtelegram api
یه برنامه نویس وب که شدید علاقه داره به یادگیری بیشتر توی زمینه کاریش و مسائل مرتبط با آی.تی و تکنولوژی :))
شاید از این پست‌ها خوشتان بیاید