من امیر هستم

مکانی برای به اشتراک گذاشتن مطالب جدید.

ربات بله با php

سلام
چندوقت پیش یک نفر من رو ازطریق مطلبی که درباره بات نویسی پیام رسان بله نوشته بودم پیداکرد (نمیدونم از طریق ویرگولم بود یا همین سایت)‌ و گفت یک مسابقه داریم و میخوایم افراد اثر هاشنو رو برای ربات بفرستند و ربات برای من. (ربات بله برای فورواد کردن نیاز داشتن، یعنی نمی خواست افراد مستقیما براش چیزی بفرستند و میخواست به واسطه ربات پیام هارو دریافت کنه!)، گفتن سرور داریم، ربات رو با پایتون آمده کردم(که خیلی داستان داشت، بعدا وقت شد مینویسم) گفتم دسترسی ssh بدید بارگذاری کنم دیدم یوزنیم پسورد یک هاست cpanel فرستادن!
دوتا راهکار داشتم:
1- پیاده سازی با فلسک یا …
2- استفاده از php (لعنت الله علیه)

یکم با کدم سرکله زدم دیدم پیاده سازیش داستان داره، بیخیال شدم و رفتم به سمت PHP !
حدود یکی دوسال پیش با php برای تلگرام بات نوشتم (اگر قسمت بشه کدش رو تو گیت‌هام پابلیش میکنم) رباتی که فایل های apk براش ارسال میکردی و با virus total چک میکرد بد افزار هست یا نه (اون زمان تو تلگرام خیلی بدافزار به باعنوان های زرد مثل صیغه یاب و… منتشر میشد)

مطلب بالا رو برای این گفتم، چون api جدید بله با تلگرام سازگاری داره (یا حداقل اینطوری ادعا میکنن) و اون کتابخونه که استفاده کردم خیلی کوچیک و راه انداز بود و فقط کافی هست با چند تغییر کوچیک برای بله آمادش کنیم.

برای شروع اول این کتاب خونه رو دانلود کنید.
و مقدار api.telegram.org این خط و این خط رو به tapi.bale.ai تغییر بدید، به همین آسونی!

مثلا یک فایل به اسم bot.php ایجاد کنید و دو فایل Telegram.php و TelegramErrorLogger.php در کنارش قرار بدید (حتما تغییرات قسمت بالا رو داده باشد)

bot.php

<?php
include 'Telegram.php';

$bot_token = 'BOT_TOKEN';
$telegram = new Telegram($bot_token);
$admin_chat_id = YOUR_CHAT_ID;

$text       = $telegram->Text();
$username   = $telegram->Username();
$name       = $telegram->FirstName();
$family     = $telegram->LastName();
$message_id = $telegram->MessageID();
$user_id    = $telegram->UserID();
$chat_id    = $telegram->ChatID(); 
$msgType    = $telegram->getUpdateType();

// handle command
if($text == '/start'){
    $content = array('chat_id' => $chat_id,'reply_to_message_id' => $message_id, 'text' => "سلام رفیق");
    $telegram->sendMessage($content);
    die();
}else if($text == '/help'){
    $content = array('chat_id' => $chat_id,'reply_to_message_id' => $message_id, 'text' => 'کمک لازم داره؟');
    $telegram->sendMessage($content);
    die();
}

//send message information
$content = array('chat_id' => $admin_chat_id, 'text' => "اطلاعات پیام: \n
chat id: ".$chat_id."\nfirst name: ".$name."\nusername: @".$username);
$telegram->sendMessage($content);

// forward message to admin
$content = array('chat_id' => $admin_chat_id,'message_id' => $message_id, 'from_chat_id' => $chat_id );
$telegram->forwardMessage($content);

// say sent success
$content = array('chat_id' => $chat_id,'reply_to_message_id' => $message_id, 'text' => 'پیام باموفقیت دریافت شد');
$telegram->sendMessage($content);

مقدار BOT_TOKEN رو به توکن ربات خودتون و YOUR_CHAT_ID رو با چت آیدی خودتون جایگزین کنین.

و در آخر webhook تون رو ست کنید:

https://tapi.bale.ai/bot[BOT_TOKEN]/setwebhook?url=https://[YOUR_DOMAIN]

موفق باشید

پ.ن: چند بازخورد گرفتم که میگفتن YOUR_CHAT_ID چی چی هست و از کجا پیدا کنیم. لازم شد یکی چیزی رو اینجا توضیح بدم.
اول از همه این یک ربات فورواد کننده هست همونطوری که بالا اشاره کردم. دوم،‌ برای بدست آوردن chat id خودتون، میتونید یک قسمت دیگه به کد اضافه کنید که chat id خودتون رو برای خودتون بفرسته، مثلا:

$content = array('chat_id' => $chat_id,'reply_to_message_id' => $message_id, 'text' => 'چت آید شما: '.$chat_id);
$telegram->sendMessage($content);

23 پاسخ به “ربات بله با php”

  1. هموطن نیم‌رخ

    سلام
    درباره ست کردن webhook میشه بیشتر توضیح بدید؟
    من روی هاستم یه پوشه ساختم و فایلهای کتابخانه شما رو با تغییراتی که گفتید داخلش وارد کردم مرحله مرحله پیش رفتم اما چنین پاسخی از وبهوک میگیرم توی مرورگر:
    {
    “ok” : false,
    “result” : null,
    “description” : “Not Found: method not found”,
    “errorCode” : 404,
    “parameters” : null
    }

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      سلام هموطن 🙂
      ست کردن وب ‌هوک ربات بله دقبقا مثل ربات تلگرام هست
      فقط کافی هست مقدار [BOT_TOKEN] و [YOUR_DOMAIN] با توکن و ادرس خودن عوض کنید!
      (من یک یک غلط املایی در قسمت وب هوک داشتم، درستش کردم به احتمال زیاد برای همون کارنمیکرد، شرمنده)

  2. علی نیم‌رخ
    علی

    ساختمش 🙂

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      آفرین 🙂

  3. جعفر نیم‌رخ
    جعفر

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

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      سلام
      واقعا یادم نیست، این ربات مال خیلی وقت پیش هست 🙂

  4. saber نیم‌رخ
    saber

    salam
    agha in chat_id ro bayad az koja bir biyarim

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      سلام
      موقعی که پیام براتون ارسال میشه و شما دریافت میکنید حامل chat id هم هست

  5. نیما نیم‌رخ
    نیما

    داداش هر مرحله رو که گفتی انجام دادم ولی نشد. هاست از پک رایگان infinityfree هست و گواهی ssl فعالی داره و سایت رو که سرچ میکنم میاره ولی ربات کار نمیکنه.

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      باید لاگ کنی، شاید داری جایی ارور میخوری فکر میکنی که کلا کار نمیکنه!

  6. امیرحسین نیم‌رخ

    سلام، با php خام نمیشه!؟ حتما باید با composer استفاده کرد؟!

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      سلام
      این با PHP خام هست 🙂

  7. سینا نیم‌رخ
    سینا

    سلام ممنون از اطلاعات خوبتون
    چگونه chat id رو در پیام رسان بله پیدا کنیم؟

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      سلام، لطف دارید
      اینکه قبل از پیام به ربات chat id رو پیدا کنید رو نمیدونم(بگردید، شاید رباتی پیدا کردید که با فوروارد کردن پیام بهتون chat id رو بده) ولی توی کد مشخص هست چطور
      $chat_id = $telegram->ChatID();

  8. سینا نیم‌رخ
    سینا

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

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      نه،‌id با username‌متفاوت هست.
      به آخر پست یک توضیح اضافه کردم، اون بخونید

  9. سینا نیم‌رخ
    سینا

    ممنون لطف کردین

  10. صابر طباطبایی یزدی نیم‌رخ

    همین کتابخونه رو سال 96 من استفاده کردم و سال 97 باهاش یک استارت آپ راه انداختم
    الان که فهمیدم بله همون رو میتونه ساپورت کنه رفتم کاری که گفتی رو کردم

    composer require saber13812002/telegram-bale-bot-php

    هر کس خواست میتونه از این استفاده کنه

    راهنماش رو هم اینجا میگذارم

    https://github.com/saber13812002/TelegramBotPHP

    خیلی ساده است

    اگر کلاس تلگرام رو صدا زدی توکن میدی استفاده میکنی
    $telegram = new Telegram(‘YOUR_TELEGRAM_TOKEN’);

    مثل قبل

    اگر کلاس بله رو خواستی بزنی توکن بله رو میدی پارامتر دوم رو ‘bale’ میفرستی

    $bale = new Telegram(‘YOUR_BALE_TOKEN’,’bale’);

    و بقیه چیزا همه مثل قبله

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      عالی!

  11. فراز نیم‌رخ

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

    اینم نتیجه ست وبهوک
    {“ok”:true,”result”:true,”error_code”:0}

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      سلام
      این کد رو خیلی وقت پیش نوشتم و اصلا یادم نیست
      فکر کنم خودش یک فایل لاگ میسازه و ارور ها رو اونجا میذاره

  12. آتنا نیم‌رخ
    آتنا

    سلام
    ببخشید چطور میشه از sendMediaGroup استفاده کرد؟
    هرچی سعی میکنم متوجه نمیشم باید چیکار کنم! همه راه هارو رفتم کار نکرد!

    1. امیر مطهری نیم‌رخ
      امیر مطهری

      سلام
      نمیدونم، این پروژه من برای خیلی قدیم هست