آموزش ساخت ربات تلگرام CLI با PHP

  • آپدیت شده در تاریخ

آموزش ساخت ربات تلگرام CLI با PHP

شاید شما از برنامه نویسانی باشید که بخواهید تلگرام رو به صورت تحت وب برای خودتان شخصی سازی کنید. به خاطر سورس باز (open source) بودن تلگرام ، ساخت ربات تلگرام و انجام شخصی سازی های مختلف بسیار آسان است.

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

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

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

سورس ربات تلگرام CLI را در آخر مقاله از باکس دانلود , دریافت کنید

۱ – نصب

برای کار با این برنامه که از این به بعد به اسم واقعیش یعنی ‌tg-cli صداش میزنیم ابتدا باید طبق توضیحات خودش توی لینوکس نصبش کنید.بعد از اینکه نصبش کردید با دستور

در خط فرمان لینوکس (terminal) اجرا کنید

در ابتدا از شما شماره موبایل میخواد. شماره موبایلی رو که روش تلگرام دارید رو بهش بدید. یک کد به تلگرامتون ارسال میشه. کد رو وارد کنید. حالا وارد برنامه tg-cli شدید و میتونید به وسیله دستوراتی که داره با تلگرام توی ترمینال کار کنید.

میتونید دستور help رو تایپ کنید تا ببینید چه دستوراتی داره.مثلا با دستور contact_list میتونید لیست کانتکت هاتون رو ببینید. بعد از اینکه از کار کردن باهاش مطمین شدید با زدن Ctrl+c ازش خارج بشید و مرحله بعدی رو انجام بدید.

۲ – نصب کتابخانه مورد نیاز ساخت ربات تلگرام CLI با Composer

به وسیله Composer کتابخانه زیر رو نصب کنید.

ابتدا یک فایل با نام composer.json ایجاد کنید و محتویات زیر رو داخلش کپی کنید :

سپس دستور composer install رو اجرا کنید.

نکته :‌اگر نمیدونید Composer چیه و چجوری نصبش کنید و چجوری میشه ازش استفاده کرد بهتره با مراجعه به آموزش composer در php و بعد از یادگرفتن کامپوزر برگردید و آموزش رو ادامه بدید.

۳ – ایحاد کد های ساخت ربات تلگرام CLI با PHP

حالا یک فایل با نام index.php ایجاد کنید :

خط اول یه شیء جدید ساختیم و آدرس سوکتی که توی مرحله بعد میبینید رو بهش دادیم. خط بعدی لیست کانتکت هارو گرفتیم. خط بعدش پرینتش کردیم. خط آخر هم یک پیام به اولین کانتکتمون ارسال کردیم.

۴ – مرحله آخر – اجرای اسکریپت

خب فایل index.php رو ذخیره کنید.حالا Terminal رو باز کنید و توی مسیری که tg-cli رو نصب کردید دستور زیر رو بزنید :

با استفاده از این دستور تمام ارتباطاطی رو که میخوایم با tg-cli داشته باشیم از طریق سوکتی که در مسیر /tmp/t.sck ذخیره شده انجام میدیم. پس دقت کنید که مسیر سوکت رو در فایل php هم درست وارد کنید.

آپشن --json هم به منظور استقاده شده که تمام خروحی ها رو به صورت json برای ما برگردونه تا توی php راحت تر بتونیم ازش استفاده کنیم.

حالا index.php رو توی مرورگر باز کنید. اگر مراحل قبل رو به درستی انجام داده باشید٫ پس بازشدن مرورگر و اجر شدن index.php لیست contact های شما توی صفحه نمایش داده میشه. همچنین یک پیام به اولین کانتکت شما ارسال میشه.(حواستون باشه چیز بدی ننویسید آبرو ریزی بشه)

نکته خوبی که در مورد استفاده از این کتابخانه هست اینه که تمای دستوراتی که توی برنامه tg-cli وجود داره رو با همون سینتکس میتونید استفاده کنید.

مثلا دستور post برای ارسال پیام به یک کاربر خاصه. توی خط فرمان باید مثل زیر عمل کنیم :

حالا همین دستور رو اگر بخواید در php استفاده کنید باید مثل زیر باشه :‌

با استفاده از این کلاس میتوانید برای خودتان یک تلگرام شخصی سازی شده درست کنید که مثلا وقتی یک پیام رو خواندید تیک خوانده شده برای طرف مقابل نخوره. یا هزاران کار فوق العاده دیگذ.

کد های ساخت ربات تلگرام CLI با PHP را از باکس دانلود , دریافت کنید

هر گونه سوالی در مورد پیاده سازی ساخت ربات تلگرام CLI با PHP داشتید از قسمت نظرات ارسال کنید . سریعا به پرسش شما پاسخ داده می شود .

سفارش ساخت ربات تلگرام

موفق و پیروز باشید

حسن شفیعی علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. توصیه من: هاست میهن وب‎هاست
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۹۰)

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

  1. Hadi ۵ بهمن ۱۳۹۹

    سلام خوبین
    من یه چنلی دارم میخام مشاهده کنم کیا پست که میذارم رو مشاهده میکنن
    مثلا ۱۰ تا ویو میخوره ببینم کیا نگاه کردن به این پست
    همچین جیزی میشه ؟
    لطفا کمک کنین

    پاسخ
    1. حسن شفیعی ۵ بهمن ۱۳۹۹

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

      پاسخ
  2. محمد ۹ آذر ۱۳۹۹

    سوال دیگه ای هم که دارم اینه که وقتی داریم index.php رو اجرا میکنیم باید حتما روی سرور مجازی باشه یا رو خود لینوکس کامپیوتر قابل اجراست ؟

    پاسخ
  3. امین ۸ آذر ۱۳۹۹

    ./bin/telegram-cli –json -dWS /tmp/t.sck &
    اینجا شما جلوی t.sck یک & گذاشتین چون من با اند اجرا میکنم کار نمیکنه اصلا
    احمالا چیزی جلوش بوده که حذف شده ؟
    یه جایی تو کامنت ها گفتین که باید Permission 777 بگیریم خوب چطوری باید این پرمیشن داده بشه من چیزی نمیبینم فقط تلگرام اجرا میشه و اگه تو مرورگر بزنم index.php اصلا چیزی نشون نمیده
    سیستم عامل من لینوکس هست

    پاسخ
  4. امین ۸ آذر ۱۳۹۹

    سلام وقت بخیر
    من Index.php رو تو مرورگر به چه صورتی وارد کنم که بیاره.
    مثلا تو لینوکس میرم تو همون پوشه bin و از اون جا میزنم که با فایرفاکس اجرا بشه این طوری اصلا چیزی نشون نمیده.
    به نظرتون باید چیکار کنم؟

    پاسخ
  5. محمد ۱ شهریور ۱۳۹۹

    با استفاده از همین cli به تنهایی میشه ربات تبچی رو نوشت ؟
    خیلیا با میدلاین تبچی رو نوشتن شما چه روشی رو بهتر میدونید ؟

    پاسخ
    1. حسن شفیعی ۱ شهریور ۱۳۹۹

      با cli و madeline میتونید ربات تبچی بسازید و هر دو عالی هستند.

      پاسخ
      1. محمد ۱ شهریور ۱۳۹۹

        ببخشید میگن میدلاین یه کتابخونه پردردسریه و سخت میشه باهاش کار کرد
        شما قبول دارین ؟

        پاسخ
      2. حسن شفیعی ۱ شهریور ۱۳۹۹

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

        پاسخ
  6. علیرضا ۳۱ مرداد ۱۳۹۹

    سلام من این ارورو دریافت میکنم مشکل چیه ؟
    Fatal error: Uncaught Exception: RPC_CALL_FAIL 401: AUTH_KEY_UNREGISTERED

    پاسخ
    1. حسن شفیعی ۳۱ مرداد ۱۳۹۹

      سلام. فولدر .telegram-cli رو حذف و دوباره تست کنید.
      اگر اوکی نشد عملیات اعتبارسنجی و دریافت و وارد کردن کد رو مجدد انجام بدید

      پاسخ
      1. علیرضا ۳۱ مرداد ۱۳۹۹

        اره درست شد ولی بعد چند بار کار کردن این ارورو داد .
        Fatal error: Uncaught Exception: Something went wrong.

        پاسخ
  7. محمدرضا طاهری ۳۰ مرداد ۱۳۹۹

    سلام من ارور زیر رو دریافت میکنم
    Warning: stream_socket_client(): unable to connect to unix:///tmp/t.sck (No such file or directory) in /var/www/html/vendor/smoqadam/telegramcli/src/Smoqadam/TelegramCli.php on line 18

    Fatal error: Uncaught Exception: Connect to remote socket failed. in /var/www/html/vendor/smoqadam/telegramcli/src/Smoqadam/TelegramCli.php:20 Stack trace: #0 /var/www/html/index.php(4): Smoqadam\TelegramCli->__construct(‘unix:///tmp/t.s…’) #1 {main} thrown in /var/www/html/vendor/smoqadam/telegramcli/src/Smoqadam/TelegramCli.php on line 20

    بعد قبل اینکه ایندکسمو توی مرورگر اجرا کنم توی ترمینال لینوکس اینو اجرا میکنم
    ./tg/bin/telegram-cli –json -dWS /tmp/t.sck &
    جوابش اینو میده
    [۱] ۲۹۹۳۸
    بعد که دوباره اجرا میکنم
    bind: Address already in use
    اینو میده
    مشکل این دوتا چیه ؟

    پاسخ
    1. حسن شفیعی ۳۰ مرداد ۱۳۹۹

      سلام. مورد اولی که به خاطر پرمیشن میتونه باشه که یه whoami بزنید و یا با sudo اجرا کنید.
      برای بار اول که اجرا کردید دیگه پورد در حال استفاده میشه و مجدد نمیتونید با همان پورت کانکشن بسازید.

      پاسخ
  8. حسین ۱۳ فروردین ۱۳۹۹

    سلام با این cli میشه این کارو انجام داد
    مثلا من الان آیدی عددی یک کانال رو دارم
    میخوام با اون آیدی عددی به کانال دسترسی داشته باشم . ممنون

    پاسخ
    1. حسن شفیعی ۱۳ فروردین ۱۳۹۹

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

      پاسخ
  9. حامد ۱۲ شهریور ۱۳۹۸

    سلام و خسته نباشید
    می خواستم ببینم با این روش آیا امکان اینکه مطالب منتشر شده در یک کانال را بخونه و به یک کانال یا گروه دیگه ارسال کنه هست؟
    آیا حتما باید عضو کانال مبدا بود یا خیر؟

    پاسخ
    1. حسن شفیعی ۱۲ شهریور ۱۳۹۸

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

      پاسخ
      1. حامد ۱۳ شهریور ۱۳۹۸

        ممنونم از جوابتون
        میخواستم ببینم شما میدونید این بات (channels ( junction_bot از چه روشی استفاده کرده برای رصد کانال و گروه ها؟
        من تست کردم بات عضو کانال نمیشه ولی دیتای کانال رو میتونه بخونه و به کانال یا شخص دیگه ارسال کنه

        پاسخ
      2. حسن شفیعی ۱۳ شهریور ۱۳۹۸

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

        پاسخ
  10. رضا ۲۰ مرداد ۱۳۹۸

    سلام آیا امکان داره این روی هاست اجراشه

    پاسخ
    1. حسن شفیعی ۲۰ مرداد ۱۳۹۸

      سلام. خیر.
      موفق باشید

      پاسخ
دوره های آموزشی