سلام
چندوقت پیش یک نفر من رو ازطریق مطلبی که درباره بات نویسی پیام رسان بله نوشته بودم پیداکرد (نمیدونم از طریق ویرگولم بود یا همین سایت) و گفت یک مسابقه داریم و میخوایم افراد اثر هاشنو رو برای ربات بفرستند و ربات برای من. (ربات بله برای فورواد کردن نیاز داشتن، یعنی نمی خواست افراد مستقیما براش چیزی بفرستند و میخواست به واسطه ربات پیام هارو دریافت کنه!)، گفتن سرور داریم، ربات رو با پایتون آمده کردم(که خیلی داستان داشت، بعدا وقت شد مینویسم) گفتم دسترسی 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<?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 تون رو ست کنید:
1 |
https://tapi.bale.ai/bot[BOT_TOKEN]/setwebhook?url=https://[YOUR_DOMAIN] |
موفق باشید
پ.ن: چند بازخورد گرفتم که میگفتن YOUR_CHAT_ID چی چی هست و از کجا پیدا کنیم. لازم شد یکی چیزی رو اینجا توضیح بدم.
اول از همه این یک ربات فورواد کننده هست همونطوری که بالا اشاره کردم. دوم، برای بدست آوردن chat id خودتون، میتونید یک قسمت دیگه به کد اضافه کنید که chat id خودتون رو برای خودتون بفرسته، مثلا:
1 2 |
$content = array('chat_id' => $chat_id,'reply_to_message_id' => $message_id, 'text' => 'چت آید شما: '.$chat_id); $telegram->sendMessage($content); |
سلام
درباره ست کردن webhook میشه بیشتر توضیح بدید؟
من روی هاستم یه پوشه ساختم و فایلهای کتابخانه شما رو با تغییراتی که گفتید داخلش وارد کردم مرحله مرحله پیش رفتم اما چنین پاسخی از وبهوک میگیرم توی مرورگر:
{
“ok” : false,
“result” : null,
“description” : “Not Found: method not found”,
“errorCode” : 404,
“parameters” : null
}
سلام هموطن 🙂
ست کردن وب هوک ربات بله دقبقا مثل ربات تلگرام هست
فقط کافی هست مقدار [BOT_TOKEN] و [YOUR_DOMAIN] با توکن و ادرس خودن عوض کنید!
(من یک یک غلط املایی در قسمت وب هوک داشتم، درستش کردم به احتمال زیاد برای همون کارنمیکرد، شرمنده)
ساختمش 🙂
آفرین 🙂
سلام ممنون..ربات درست کار میکنه ولی من نتونستم کیبورد واینلاین کیبورد را راه اندازی کنم..نمایش نمیده
سلام
واقعا یادم نیست، این ربات مال خیلی وقت پیش هست 🙂
salam
agha in chat_id ro bayad az koja bir biyarim
سلام
موقعی که پیام براتون ارسال میشه و شما دریافت میکنید حامل chat id هم هست
داداش هر مرحله رو که گفتی انجام دادم ولی نشد. هاست از پک رایگان infinityfree هست و گواهی ssl فعالی داره و سایت رو که سرچ میکنم میاره ولی ربات کار نمیکنه.
باید لاگ کنی، شاید داری جایی ارور میخوری فکر میکنی که کلا کار نمیکنه!
سلام، با php خام نمیشه!؟ حتما باید با composer استفاده کرد؟!
سلام
این با PHP خام هست 🙂
سلام ممنون از اطلاعات خوبتون
چگونه chat id رو در پیام رسان بله پیدا کنیم؟
سلام، لطف دارید
اینکه قبل از پیام به ربات chat id رو پیدا کنید رو نمیدونم(بگردید، شاید رباتی پیدا کردید که با فوروارد کردن پیام بهتون chat id رو بده) ولی توی کد مشخص هست چطور
$chat_id = $telegram->ChatID();
ممنونم
فقط الا $admin_chat_id همان آید داخل پروفایل بله هستش یا باید از جایی پیدا کنیم؟
نه،id با usernameمتفاوت هست.
به آخر پست یک توضیح اضافه کردم، اون بخونید
ممنون لطف کردین
همین کتابخونه رو سال 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’);
و بقیه چیزا همه مثل قبله
عالی!
سلام
من یه سورس رو api رو از تلگرام به بله تغییر دادم
ست وبهوک هم موفقیت آمیز بود
ولی ربات کار نمیکنه میشه کمک کنید
اینم نتیجه ست وبهوک
{“ok”:true,”result”:true,”error_code”:0}
سلام
این کد رو خیلی وقت پیش نوشتم و اصلا یادم نیست
فکر کنم خودش یک فایل لاگ میسازه و ارور ها رو اونجا میذاره
سلام
ببخشید چطور میشه از sendMediaGroup استفاده کرد؟
هرچی سعی میکنم متوجه نمیشم باید چیکار کنم! همه راه هارو رفتم کار نکرد!
سلام
نمیدونم، این پروژه من برای خیلی قدیم هست