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

خوب نبودخوبخیلی خوبعالیخیلی عالی (4٫73 از 11 رای)

در این پست قصد داریم آموزش ساخت ربات تلگرام را آموزش دهیم. همچنین در ادامه به شما می‌آموزیم که چگونه SSL رایگان تهیه کنید. آموزش به صورت قدم به قدم می‌باشد و در انتهای آموزش سورس ربات را برای دانلود قرار داده ایم.

ابتدا باید در بوت فادر ربات خود را ایجاد کنید .

telegrambotphp1

همان طور که در تصویر بالا می بینید من رباتی به نام myphpbot ایجاد کردم، توجه داشته باشید که این ربات در پایان آموزش از بین خواهد رفت پس از token id من استفاده نکنید. اگر با بوت فادر کار نکرده اید می توانید به لینک مراجعه کنید.

استفاده ازwebHoock :

در این آموزش قصد داریم از webHook استفاده کنیم، برای این کار شما نیاز به مجوز ssl دارید، که می‌توانید آن را خریداری کرده یا از سرویس دهنده‌ های رایگان مانند cloudflare.com استفاده کنید.

چگونه از کلودفلیر SSL رایگان دریافت کنیم ؟

ابتدا به سایت cloudflare مراجعه کنید، سپس یک حساب کاربری برای خود ایجاد کنید.

سپس add site را بزنید ، صفحه ای مانند تصویر زیر خواهید دید .

telegrambotphp2

نام دومین خود را وارد کنید مثلا salam.com و دکمه Begin Scan را بزنید، دامنه شما اسکن می شود، اگر همه چیز خوب پیش برود شما وارد صفحه مدیریت DNS ها می شوید که به صورت اتوماتیک کارهای مورد نیاز را انجام داده است، تصویری شبیه تصویر زیر:

telegrambotphp3

برروی دکمه ادامه کلیک کنید و به مسیر خود ادامه دهید، صفحه ای با عنوان update name servers به شما نمایش داده خواهد شد، که در آن name servers فعلی و name servers که باید به جای آن قرار دهید را به شما نمایش داده است، به پنل مدیریت دامنه خود بروید و در قسمت مدیریت DNS این name servers های جدید را جایگذین قدیمی ها کنید.
telegrambotphp4
بعد از اینکه جابجایی را انجام دادید، به cloudflare باز گردید قسمت overview را مشاهده کنید و ببینید وضعیت شما چیست؟

telegrambotphp5

خب؛ شما می‌توانید وضعیت ssl را از حالت full به flexible تغییر دهید برای این کار به قسمت crypto بروید، در قسمت مربوط به ssl حالت full را به flexible تغییر دهید .

telegrambotphp6

صبر کنید تا مانند تصویر بالا active certificate برای شما نمایان شود بعد از این حدود ۴ ساعت صبر کنید تا ssl شما فعال شود .دقت کنید مدت زمان اعتبار رایگان شما ۶ ماه است.

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

https://api.telegram.org/bot273759407:AAEOqgo3I5nob3jIGzkY1ihguhPbXl945RQ/setwebhook?url=https://salam.com/myphpbot.php

دقت کنید که بعد از کلمه bot باید token خود را وارد کنید ، هم چنین در قسمت url آدرس خود را.

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

telegrambotphp8

وب هوک هم ست شد حالا نوبت نوشتن کدها می رسد ، ربات ما قرار است کار بسیار ساده ای انجام دهد ، اگر کاربر پیام salam را بفرستد در جواب خواهد گفت salam be ruye mahet در غیر این صورت هر پیام دیگری دریافت کند می گوید chi migi??


به یاد داشته باشید ، که پیام های به صورت json به سمت شما می آید پس باید json را دی کد کنیم

کد بسیار ساده است و نیاز به توضیح بیشتری نیست.

نوبت آن است که ربات مان را امتحان کنیم :

telegrambotphp9

telegrambotphp10

چگونه دکمه ایجاد کنیم :

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

ini_set('error_reporting', 'E_ALL');

$botToken = "273759407:AAEOqgo3I5nob3jIGzkY1ihguhPbXl945RQ";
$webSite = "https://api.telegram.org/bot" . $botToken;

$update = file_get_contents("php://input");
$update = json_decode($update, TRUE);

$chatId = $update["message"]["chat"]["id"];
$message = $update["message"]["text"];

//CustomKeyBord
$option = array(array("salam", "Key1"), array("key2", "key3"));
$replyMarkup = array(
 'keyboard' => $option,
 'one_time_keyboard' => false,
 'resize_keyboard' => true,
 'selective' => true
);
$encodedMarkup = json_encode($replyMarkup, true);

function sendMessage($chatId, $message, $r)
{
 $url = $GLOBALS['webSite'] . "/sendMessage?chat_id=" . $chatId . "&text=" . urlencode($message) . "&reply_markup=" . $r;
 file_get_contents($url);
}

switch ($message) {

 case "/start":
 sendMessage($chatId, "شروع می کنیم", $encodedMarkup);
 break;
 case "salam":
 sendMessage($chatId, "salam be ruye mahet", $encodedMarkup);
 break;
 default:
 sendMessage($chatId, "chi migi ??", $encodedMarkup);

}

به تصویر زیر توجه کنید :

همان طور که در کد و تصویر بالا میبینید ، برای ساخت دکمه به آرایه نیاز داریم ، رنگ زرد نشان دهنده ردیف اول دکمه ها می باشد ، و دارای دو دکمه به نام salam و Key1 است ، رنگ قرمز ردیف دوم و دارای دو دکمه می باشد ، برای ساخت ردیف سوم و … می توانید به همین شکل یک یا چند آرایه دیگر اضافه کنید.

خوب همه چیز درسته ، برای کسب اطلاعات بیشتر می توانید به https://telegram.org/ مراجعه کنید هم چنین ، می توانید از api های دیگری استفاده کنید که خود تلگرام معرفی کرده و در github موجود است، با رفتن به این آدرس می توانید آن ها را بیابید. https://core.telegram.org/bots/samples

پوریا پرهامی

پوریا پرهامی هستم، چند سالی هست که در مجموعه دارکوب وب فعالیت می‌کنم. عمده‌ی فعالیت من در زمینه برنامه نویسی هستش. همچنین به هوش مصنوعی و آموزش زبان‌های برنامه نویسی علاقه دارم.

مقالات پیشنهادی دارکوب وب

خبرنامه دارکوب وب

با عضویت در خبرنامه دارکوب وب، هر هفته یک ایمیل از آخرین مقالات و تخفیفات هیجان انگیز ما مطلع شوید.

162 پاسخ
  1. علی
    علی گفته:

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

    پاسخ
    • پوریا
      پوریا گفته:

      سلام علی عزیز
      برنامه نویسی را درون سرور انجام می‌دیم، در انتهای وب هوک salam.com نام دامنه من و myphpbot.php نام فایل php است، که روبات را درون آن نوشته ام.
      و بعد از برنامه نویسی، نرم افزار تلگرام خودتونو باز کنید و به دنبال روبات خودتون بگردید اونو پیدا کنید و اگر کدها را درست و بدون خطا زده باشید و وب هوک هم درست ست شده باشه،
      ssl هم روی دامنه شما اکتیو باشه، می‌تونید با ربات خودتون ارتباط برقرار کنید.
      شاد و سلامت باشید.

  2. سلمان
    سلمان گفته:

    سلام و خداقوت
    متوجه نشدم چطور و از چه قسمتی برنامه نویسی رو شروع میکنید؟
    یعنی من چطور باید اون فایل myphpbot.php که کد رو روش نوشتم آپلود کنم
    و یا اگه روی سرور باید کد رو بنویسم از کدوم قسمت وارد محیط کدنویسی بشم
    ممنونم اگه توضیح بدی

    پاسخ
    • سلمان
      سلمان گفته:

      متوجه شدم، هاست رو باید از یه جای دیگه تهیه کنم و کلود فلیر فقط ssl به ما میده
      ولی کد رو دقیقاً کپی کردم و توکن رو به توکن رباتم تغییر دادم
      رباتم عکس العملی نشون نمیده

    • پوریا
      پوریا گفته:

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

  3. نیوانتا
    نیوانتا گفته:

    سلام به همه
    بنده ssl بر روی سایتم از طریق پشتیبانی هاست فعال شد و وب هوک هم درست ست شد:

    اما اصلا روبات خواب خوابه

    لطفا کمک کنید

    پاسخ
    • پوریا
      پوریا گفته:

      سلام محمد عزیز
      اگر منظور شما درست متوجه شده باشم:

      لینکی که اینجا قرار دادید در واقع یکی از راه های ارتباطی کاربران با ربات شما است، که در این شکل صفحه تلگرام ویندوز باز می شه و اینپوت باکسی که برای نوشتن متن پیام است با یک دکمه بزرگ start جایگزین می شه و اون دکمه چیزی که به سمت شما ارسال می کنه ” هرچی start/ ” خواهد بود نه start/ خالی، در اینجا هنگامی که من بخوام با ربات شما از این طریق ارتبات برقرار کنم start 73782230/ به سمت شما میاد (وقتی وارد ربات بشم و روی دکمه استارت کلیک کنم)

      اطلاعات که به سمت ما میاد به صورت JSON هست و شما باید JSON را بگیرید، دی کد کنید، ببینید چه پیامی در اون وجود داره، و به آن پاسخ بدید.
      در واقع اگر من به ربات شما بگم hi چیزی شبیه این سمت شما میاد:

      ,ok”:true,”result”:[{“update_id”:87654321″}
      {[{{“message”:{“message_id”:1,”from”:{“id”:001,”first_name”:”Pouria”,”last_name”:”parhami”},”chat”:{“id”:001,”first_name”:”Pouria”,”last_name”:”Parhami”},”date”:542188854,”text”:”hi”

      این ۳ خط برای دی کد کردن ، گرفتن مقدار چت آدی و دریافت پیامی است که کاربر به ربات داده است استفاده می‌‌شه.
      ;(update = json_decode($update, TRUE$

      ;[“chatId = $update[“message”][“chat”][“id$
      ;[“message = $update[“message”][“text$

      و سپس همان طور که در مثال این آموزش آمده است با یک سویچ می تونید چک کنید چه پیامی آمده است و در مقابل چه پیامی باید چاپ بشه یا چه کارهایی باید انجام بشه.
      و فکر می‌کنم بخواید از دیتابیس هم استفاده کنید، این لینک هم ممکنه کمکتون کنه
      https://code.tutsplus.com/articles/how-to-start-a-telegram-bot-with-php–cms-26329

      در این لینک هم سوالی شده، کامنت هایی که به عنوان پاسخ صحیح ثبت شده را نگاه کنید، امید وارم مشکل شما برطرف بشه
      http://stackoverflow.com/questions/31197659/how-we-should-send-query-to-telegram-bot-api

      این لینک هم مطالعه کنید:
      https://fullmeter.com/blog/?p=14

      شاد و سلامت باشید.

    • محمد
      محمد گفته:

      سلام آقا پوریا ممنون از جوابتون
      اون لینک در واقع لینک دعوت نامه هست که کاربران میتونند به دوستاشون بفرستند و من از طریق همون عدد که جلوی start هست میخوام متوجه بشم هر نفر چند نفر را دعوت کرده است
      الان من روی لینک دعوت نامه که کلیک میکنم دکمه start میاد بعد که روش میزنم

      start/
      ارسال میشه که خالی هست شما مگه نگفتید که خالی ارسال نمیشه و عدد هم باهاش بعد از start میره مثلا اینجوری
      start76797665/
      البته من سمت سرور php نتیجه رو ندیدم که ببینم دیکد شده json چیا توش میاد

    • پوریا
      پوریا گفته:

      سلام محمد عزیز
      به این نوع کار و لینک شما می گن deep-linking
      چرا دوست من برای شما start/ 76797665 ارسال می شه اما کاربر که با ربات کار می کنه فقط start/ می بینه، برای همین اگر از طریق لینک وارد بشید و روی دکمه استارت کلیک کنید به شما پیغام دستور نا معتبر است نمایش داده میشه چون شما تو سویچ یا دستور if خود تون چیزی به نام start/ 76797665 ندارید، اما اگر بعد از چاپ این پیام خودتون دستور start/ بزنید می بینید که منو و پیغام صحیح برای شما چاپ می شه.
      برای شما این start/ 76797665 از طریق JSON ارسال می شه، و فاصله ای هم بین استارت و عدد وجود داره.

      اول این لینک مطالعه کنید ساده و روان توضیح داده نحوه کار همراه با یک مثال ساده:
      https://core.telegram.org/bots#deep-linking
      بعد این دو لینک نگاه کنید مخصوصا لینک دوم که جواب همراه با کد داره و فکر میکنم بیشتر به کمک شما میاد و پاسخ مناسب برای پرسش شماست(کامند start می گیره و نگاه می کنه چی جلوی اون قرار داره و یوزر کاربر…).
      ۱- http://stackoverflow.com/questions/35111939/how-to-echo-message-at-telegram-start
      ۲- http://stackoverflow.com/questions/31042219/how-do-i-get-authentication-in-a-telegram-bot

      امید وارم مفید باشه
      شاد و سلامت باشید.

    • محمد
      محمد گفته:

      آقا دمتون گرم موفق شدم
      بالاخره این سوال فنی که کار منو متوقف کرده بود با کمک شما حل شد
      این شکلی مقدار start رو هم جدا میکنم
      $command= $arrayMessage[‘message’][‘text’];
      $command=substr($command, strpos($command, ” “) + 1);

    • َAMIR
      َAMIR گفته:

      سلام خسته نباشید
      ببخشید یه سوالی داشتم در مورد نحوه دسترسی به داده ها
      آیا میشه بجای ;[“message = $update[“message”][“text$
      از
      ;message = $update->message->text$
      استفاده کرد؟اگر بخوام اینطوری استفاده کنم باید چیکار کنم؟آیا چیز دیگه ای رو هم باید تغییر بدم یا همون خودش به تنهایی کافیه؟

    • پوریا
      پوریا گفته:

      سلام رضای عزیز
      در این آموزش نحوه ساخت دکمه آموزش داده شده، می تونید از همون استفاده کنید، برای فروارد کردن هم می تونید با رفتن به این آدرس https://core.telegram.org/bots/api#message متد فروارد مورد نظر خودتونو پیدا و استفاده کنید،
      برای مثال می تونید داده های هر کاربر را بگیرد تا زمانی که دکمه مورد نظر خورد داده قبلی استخراج و فروارد کنید، البته یک مثال بود.
      و برای اینکه کارتون راحت تر باشه می تونید از کتاب خونه هایی که با PHP یا زبان های دیگه برای راحتی کار با ربات تلگرام نوشته شده استفاده کنید که کاری که می خواید انجام بدین بسیار ساده کردن
      از این لینک می تونید کتاب خونه مورد نظر خودتونو پیدا کنید، ین کتاب خونه ها مستندات خوبی هم دارن که راهنمای شما خواهند بود.
      https://core.telegram.org/bots/samples
      شاد و سلامت باشید.

    • پوریا
      پوریا گفته:

      سلام پرهام عزیز
      کد دوم که کدها باشه، آیا دکمه ها نمایش داده نمی شن؟
      دکمه ها نمایش داده می شن اما وقتی کلیک می کنید کار مورد نظر انجام نمی شه ؟

  4. میلاد
    میلاد گفته:

    سلام و درود پوریا جان
    من میخوام وقتی کاربر کلید استارت رو زد بررسی کنه کاربر در کانال (مدیر ربات) عضو هست یانه !
    و پیام نشون بده
    یه جوری شرطی باشه !
    ممنون میشم راهنمایی کنید

    پاسخ
    • پوریا
      پوریا گفته:

      سلام میلاد عزیز
      ربات شما می تونه در گروه یا کانال عضو بشه، اول از طریق بوت فادر این قابلیت براش فعال کنید، وقتی در گروه عضو بشه یا کانال می تونه آی دی، یوزنیم و … کاربران بگیره
      وقتی کاربر روی دکمه استارت زد، شما می تونید یوز یا آدی فرد بگیرید بعد درون یک حلقه قرار بدینش تا آدی یوزر مورد نظر با لیست اعضای کانال یا گروه چک کنه اگر بود به شما ، true و اگر نبود برای شما false برگردونه.
      پیشنهاد می کنم از API هایی که برای php در این باره نوشته شده استفاده کنید تا سریع تر به نتیجه برسید.
      https://core.telegram.org/bots/samples
      البته به یاد داشته باشید که ربات شما لیست اعضای کانال را ذخیره نمی کنه و ممکنه نیاز باشه شما هر دفعه اونها رو بگیرید و چک کنید آیا کاربر مورد نظر در لیست وجود داره یا نه.
      به شخصه برای گروه مشابه این کار انجام دادم اما برای کانال خیر.
      در لینک زیر هم فردی می خوادلیست کاربران کانال تلگرامشو بگیره و راهنمایی شده
      http://stackoverflow.com/questions/33844290/how-to-get-telegram-channel-users-list-with-telegram-bot-api

      لینک زیر هم لینک هسته ربات تلگرام در گیت هاب است، در پایین صفحه با مثال هایی گفته شده چطور عکس، ای دی و … کاربر و بگیرید
      https://github.com/php-telegram-bot/core

      شاد و سلامت باشید.

  5. پارسیما
    پارسیما گفته:

    پوریاجان سپاس فراوان
    خیلی کارمو جلو انداختی با کمکت، خود تلگرام خیلی روشن نگفته باید چه کرد و سمپل هم کم هست
    اگه تونستی اینکه چطور میشه getUpdates رو با webhook بکاربرد روهم بذار
    بازم مرسی و خسته نباشی

    پاسخ
    • پوریا
      پوریا گفته:

      سلام پارسیما عزیز
      خوشحالم که این آموزش به شما کمک کرده.
      شما دو متد کلی دارید geUpdates و setWebhook، به صورت ساده:
      getUdpdates به این معنی که شما در بازه های زمانی خاص باید این متد را بارها خودتون فراخوانی کنید تا درخواست ها یا همان پیام های کاربر رو دریافت و کار یا پاسخ مناسب را به سمت اون ارسال کنید.
      setWebHook به این معنی که خود تلگرام زمانی که پیامی به سمت ربات شما از طرف کاربر ارسال بشه، اسکریپت شما را اجرا می کنه.
      برای همین زمانی که شما دارید از setWebHook استفاده می کنید نیازی به استفاده از متد getUpdates ندارید، و اگر هم تلاش کنید از این متد استفاده کنید تلگرام در یک فایل جی سون به شما پیام خطایی مبنی بر اینکه “زمانی که webhook فعال است نمی توانید از getUpdates استفاده کنید.” را به شما نشان می ده.
      شاد و سلامت باشید.

  6. جعفر
    جعفر گفته:

    با سلام وتشکر از مطلب کاربردیتان..چند سئوال داشتم محدودیت رباتها در فضای تلگرام چه چیزی است…ایا ربات با کاربر میلیونی در روز امکان پذیره…

    پاسخ
    • پوریا
      پوریا گفته:

      سلام جعفر عزیز
      متاسفانه در این مورد اطلاعات دقیقی ندارم، اما با توجه به سرورهای قدرتمند تلگرام فکر نمی کنم مشکلی داشته باشه، باید مستندات تلگرام را مطالعه کنید.
      در مورد محدودیت، کاربری که با ربات شما ارتباط برقرار کنه می تونید عکس، یوزرنیم، شماره تلفن او را بگیرید در دیتابیس ذخیره کنید و …
      اگر محدودیت خاصی مدنظر شما است، لطفا بیشتر توضیح بدید.

    • حمید
      حمید گفته:

      سلام وتشکر از سایت خوبتون
      میخواستم بدونم میشه رباتی نوشت که گروه را طی زمانبندی مدیریت کنه
      مثلا از ۱۲ شب تا ۸ صبح گروه را تعطیل کنی یعنی هر پیامی داده شد پاک کنه
      و اینکه راهنمای قوانین گروه را به پی وی شخص ارسال کنه نه داخل گروه ؟؟

    • پوریا
      پوریا گفته:

      سلام حمید عزیز
      بله می تونید رباتی بنویسید که در بازهای زمانی خواصی کاری نجام بده، (مدیریت کانال و …)
      در API های گذشته امکان پاک کردن پیام ها نبود، اما در API جدید اضافه شده ( به شخصه استفاده نکردم) این لینکها می تونن کمکنون کنن
      https://stackoverflow.com/questions/35269776/telegram-bot-how-to-delete-or-remove-a-message-or-media-from-a-channel-or-group/43965602#43965602
      https://core.telegram.org/bots/api#deletemessage
      باید از متد deletemessage استفاده کنید، و ابتدا باید قابلیت عضویت در گروه را برای ربات در بوت فادر فعال کنید، و ربات باید در گروه یا سوپر گروه عضو و ادمین باشه.
      باید هنگامی که کاربر با ربات شما ارتباط بر قرار کرد یوزرآدی بگیرد ذخیره کنید و بعد در هر زمانی که خواستید می تونید برای یوزرهایی که یوزرآدی آن ها را دارید پیام بفرستید.
      می تونید این لینکها را مطالعه کنید سوالی مشابه شما داشته اند.
      https://github.com/irazasyed/telegram-bot-sdk/issues/20
      https://stackoverflow.com/questions/35524065/send-message-to-th-all-of-bots-users-telegram-api/35540518

      شاد و سلامت باشید.

  7. َAMIR
    َAMIR گفته:

    آقا از ۰۰۰webhost.com هاست رایگان بگیرید ssl هم خودش داره نیاز به سایت های اضافی هم نیست.من خودم همین سورس رو تست کردم جواب داد.تشکر ویژه از آقا پوریا

    پاسخ
  8. امیرمهدی
    امیرمهدی گفته:

    سلام
    طبق آموزش جلو رفتم و ssl هم فعال می باشد
    منتها هیچ جوابی داخل بات دریافت نمیکنم

    قطعه کد شما عینا کپی شده (بدون دکمه) و توکن نیز جایگزین شد.
    **********
    آدرس فایل هم اینجاس
    سپاس از راهنمایی شما

    پاسخ
    • پوریا
      پوریا گفته:

      سلام امیر مهدی عزیز
      اگر کد را کپی پیست کردید، در کد اشتباه ویراشی بود در قسمت sendMessage
      amp;amp;text
      این عبارت را به =text& تغییر دهید، در کد آموزشی هم ویرایش شد.
      حتما از توکن آدی خوتون هم استفاده کردید، اگر هنوز هم مشکل داشتید، جی سونی که به سمت شما می آید را نگاه کنید، ببینید چه چیزی بر می گرداند؟ خالی ؟ خظا ؟…
      کد را دوباره بر روی سرور چک کردم و همه چیز به درستی کار می کنه
      موفق و شاد باشید.

    • امیرمهدی
      امیرمهدی گفته:

      سپاس
      مشکل از ssl بود که رفع شد
      سپاس ازشما
      لطفا ادرس وب سایت که در کامنت ذکر شد رو حذف نمایید.
      🙂

  9. amirhossein
    amirhossein گفته:

    سلام خیلی عالی یاد دادید
    ببخشید من یه سوال دارم:
    میخوام بدونم که چطوری میتونم نام کاربری کسی که استارت میزنه براش بفرستم؟
    مثلا:
    /start رو میزنه بعد ربات من براش بفرسته: سلام @username عزیز!

    پاسخ
    • پوریا
      پوریا گفته:

      سلام سید مرتضی عزیز
      در متد سند میسج برای ارسال دکمه باید
      $url = API_URL . “/sendMessage?chat_id=” . $chatId . “&text=” . urlencode($message).’&reply_markup=’ . $value;
      reply_markup استفاده کنید.
      اگر مشکل دیگری وجود داره لطفا بیشتر توضیح بدید.
      شاد و سلامت باشید.

    • سید مرتضی
      سید مرتضی گفته:

      امکان دارد کد صحیح را ارسال کنید
      چون دقیق نمی دونم این کد باید کجا قرار بگیرید
      می خوام مطمئا بشم که مشکل از کد نیست.
      دوم من دی کد نکردم اصلا نمی دونم چطوری انجام میشه

    • سید مرتضی
      سید مرتضی گفته:

      $url = $GLOBALS[‘webSite’] url = API_URL . “/sendMessage?chat_id=” . $chatId . “&text=” . urlencode($message).’&reply_markup=’ . $value;
      file_get_contents($url);

    • پوریا
      پوریا گفته:

      سلام سید مرتضی عزیز
      متد سند میسج را به این شکل بنویسید و استفاده کنید
      function sendMessage($chatId, $message, $r)
      {
      $url = $GLOBALS[‘webSite’] . “/sendMessage?chat_id=” . $chatId . “&text=” . urlencode($message) . “&reply_markup=” . $r;
      file_get_contents($url);
      }
      چه چیزی دی کد نکردین ؟

    • سید مرتضی
      سید مرتضی گفته:

      به جای این کد؟
      $url = $GLOBALS[‘webSite’] . “/sendMessage?chat_id=” . $chatId . “&text=” . urlencode($message) . “&reply_markup=” . $r;
      file_get_contents($url);

    • پوریا
      پوریا گفته:

      “&a mp ; به جاش & قرار بدید، این مشکل نگارشی بود در زمانی که من داشتم کد را در وب سایت قرار می دادم پیش اومد، و به جای & این چاپ شد “&

    • سید مرتضی
      سید مرتضی گفته:

      الان در این بخش خطا
      میده
      ‘keyboard’ => $option, *********
      ‘one_time_keyboard’ => false,
      ‘resize_keyboard’ => true,
      ‘selective’ => true

    • پوریا
      پوریا گفته:

      مرتضی عزیز
      $option = array(array(“تاریخ”, “درباره ما”,”آب و هوا”));
      $replyMarkup = array(
      ‘keyboard’ => $option,
      ‘one_time_keyboard’ => false,
      ‘resize_keyboard’ => true,
      ‘selective’ => true
      );
      $encodedMarkup = json_encode($replyMarkup, true);
      اون & gt; را پاک کنید، دوستان من دارن قالب وب سایت تغیرراتی میدن متاسفانه کدها درچار اشتباه نگارشی شده.

  10. پوریا
    پوریا گفته:

    سلام دوست عزیز مقالتون خیلی عالی بود فقط یک سوال:وقتی از متد sendMessage استفاده میکنیم ی متدهای مشابه برای ارسال متن,متن هارو به صورت متراکم و بدونه فاصله و شکست خط میفرسته و امکان استفاده از اموجی های تلگرامم نیست ولی تو روبات های دیگه دیدم که استفاده میکنن ممنون میشم در این باره راهنماییم کنین

    پاسخ
    • پوریا
      پوریا گفته:

      سلام پوریا عزیز
      در متد سند مسیج، من به این شکل متن می فرستم و ایموجی هم ارسال میشه و در قست هایی که از بک اسلش ان استفاده کردم خط دچار شکست میشه.
      “Hello, my name is … ? \n That mean hello ?. \n How can i help you ? ?”
      اگر هم می خواید از المنت های HTML البته بعضی از اونها که در داکیومنشن خود تلگرام نام برده شده استفاده کنید باید parse_mode = ‘HTML’ قرار بدید.
      شاد و سلامت باشید.

    • پوریا
      پوریا گفته:

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

      همون جور که شما گفتین کد اموجی هارو باید فرستاد ولی کدا یک مقدار متفاوته لینک کامل کدارو میزارم
      http://apps.timwhitlock.info/emoji/tables/unicode

      به عنوان مثال:\xF0\x9F\x9A\x95
      بازم ممنون از وب سایت خوبتون

  11. حسین مظفری
    حسین مظفری گفته:

    سلام.وقت بخیر و تشکر بابت مطالب مفیدتون.
    بتی در تلگرام ساختم.صد پیام که بهش ارسال میشه دیگه پیام های بعدی ارسا نمیشه.یعنی توسط getupdate پیام های بعدی خوانده نمیشه.چیکار میشه کرد؟با تشکر۰۹۳۹۴۶۹۴۰۴۶

    پاسخ
  12. محمدبراهویی
    محمدبراهویی گفته:

    آیا برای ساخت ربات ویو گیر یا همون بازدید گیر هم از این روش استفاده کنم

    آیا برای هر رباتی باید یه ربات عین ربات شما درست کنم بعد برنامه بنویسم؟

    لطفا جواب بدید!!!

    پاسخ
    • پوریا
      پوریا گفته:

      سلام محمد براهویی عزیز
      شما برای ساخت ربات تلگرام ( ارسال و دریافت پیام ) و یا هر نوع عملیات دیگری که از طریق رباتهای تلگرام می شه انجام داد و در داکیومنشن تلگرام هم ذکر شده باشه، می تونید از این کدها استفاده کنید، این کدها ساده‌ترین نیاز های ابتدایی یک ربات از قبیل دریافت پیام ارسال پیام ساخت دکمه و … است.
      در مورد ربات بازدیدگر بنده اطلاعی ندارم و متوجه نشدم منظور از ربات باز دیدگیر چی هست؟ بازدید کجا ؟ چه چیزی ؟
      شاد و سلامت باشید.

  13. مصطفی
    مصطفی گفته:

    سلام بر پوریا عزیز و تشکر از وقتی که می گذاری
    من هاست و ssl فعال دارم
    کدهایی که دنبالشم باید این دو کار را انجام بده
    ۱ – مثلا یک تصویر براش ارسال کنیم بعد یک لوگو روی اون درج کنه و بهمون تحویل بدهد اگر پیشرفته تر هم بود که لینک و در کپشن اضافه کند که بهتر
    ۲ کدهایی که محدودیت ۲۰۰ کارکتری کپشن را بردارد مثل ربات اتچ
    میشه لطفا راهنمایی کنید
    با تشکر

    پاسخ
    • پوریا
      پوریا گفته:

      سلام مصطفی عزیز
      برای دریافت فایل شما باید از getFile استفاده کنید.
      https://core.telegram.org/bots/api#getfile
      استفاده کنید، در مورد برداشتن محدودیت ۲۰۰ کاراکتری کپشن و ایجاد لوگو بر روی تصویر اطلاعاتی ندارم.
      همین طور می‌تونید از این API ساده برای ارسال و دریافت فایل استفاده کنید،
      https://github.com/PouriaParhami/vstba
      فایل theBot.php یک ربات نوشته شده با همین API است، که با دیدن کدهای اون می‌تونید چگونگی عمل کردAPI متوجه بشید.
      همین طور به این نکته توجه کنید که فایل‌ها باید داری حجم خاصی باشه، در دو لینکی که ابتدا براتون گذاشتم مطالعه کنید.
      برای ارسال تصویر نیز می توانید از :
      https://core.telegram.org/bots/api#sendphoto استفاده کنید.
      شاد و سلامت باشید.

  14. amirhossein
    amirhossein گفته:

    سلام و عرض خسته نباشید مجدد؛ یک سوال دیگه داشتم، چطوری میتونم وقتی کاربر پیام میده اسمش رو براش بفرستم؟(یوزرنیم رو گفتید اما فکر کنم اسم کوچیک بیشتر به کارم میاد:) )
    آیا میتونم از این کد استفاده کنم؟: $update[‘message’][‘chat’][‘firstname’]
    ممنون از پاسخگویی خوبتون:))

    پاسخ
    • پوریا
      پوریا گفته:

      سلام امیر حسین عزیز
      به این روشهای می تونید اطلاعات مورد نظر دریافت کنید
      ‘fromFirstName’ => $update[‘message’][‘from’][‘first_name’],
      ‘fromLastName’ => $update[‘message’][‘from’][‘last_name’],
      ‘fromUserName’ => $update[‘message’][‘from’][‘username’],
      یا
      ‘chatFirstName’ => $update[‘message’][‘chat’][‘first_name’],
      ‘chatLastName’ => $update[‘message’][‘chat’][‘last_name’],
      ‘chatUserName’ => $update[‘message’][‘chat’][‘username’],
      شاد و سلامت باشید.

  15. مهدی حسن زاده
    مهدی حسن زاده گفته:

    سلام خسته نباشید….
    من همه مراحل فوق رو انجام دادم ولی هیچ پیامی رد و بدل نمیشه.
    webHook رو هم ست کردم. پیامش هم اومد که ست شده.

    پاسخ
    • پوریا
      پوریا گفته:

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

    • پوریا
      پوریا گفته:

      سلام مهدی عزیز
      مشکلات می تونه به این دلایل باشه:
      ۱- اشتباه آدرس درهی در ست کردن وب هوک
      ۲- ست نشدن اس اس ال
      ۳- وارد کردن اشتباه توکن آی دی
      اگر این موارد همه گی درست بودن ببینید پیام خطایی دارید یا خیر مانند همیشه از این چند خط استفاده کنید
      error_reporting(E_ALL);
      ini_set(‘display_errors’, TRUE);
      ini_set(‘display_startup_errors’, TRUE);
      همین طور ببینید درون جی سونی که دریافت می کنید چه اطلاعاتی موجوده.

  16. امیدیار
    امیدیار گفته:

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

    پاسخ
    • پوریا
      پوریا گفته:

      امیدیار عزیز
      چک کنید تا آدرس وب هوک درست ست کرده باشید
      چک کنید اس اس ال فعال باشه
      چک کنید توکن آی دی درست وارد کرده باشید
      update$ با print_r یا var_dump چاپ کنید و ببیند داخلش چه اطلاعاتی وجود داره
      این سه خط کد در ابتدای فایل تون قرار بدید
      error_reporting(E_ALL);
      ini_set(‘display_errors’, TRUE);
      ini_set(‘display_startup_errors’, TRUE);

    • پوریا
      پوریا گفته:

      سلام امیدیار عزیز
      bad gateway 502 به این معنا است که یک سرور داره اطلاعات نادرست از سرور دیگری دریافت می کنه، متد سند مسیج شما داره اطلاعات نادرست ارسال می کنه.

  17. سعید
    سعید گفته:

    سلام
    من همه کارای که به دوستانمون گفتید انجام دادم بازم بات خوابه خود فایلش رو روی بروزر اجرا می کنم این خطا رو میده
    file_get_contents(https://api.telegram.org/botxxxxxxxxxxxxxxxxxxxXXXXXXXX/sendMessage?chat_id=&text=chi+migi+%3F%3F): failed to open stream: HTTP request failed! HTTP/1.1 400
    Bad Request in
    شما می تونید راهنماییم کنید؟

    پاسخ
    • سعید
      سعید گفته:

      آقا با curl این مشکل رو حل کردم الان رو بروزر می زنم این پیغام رو می ده
      {“ok”:false,”error_code”:400,”description”:”Bad Request: chat_id is empty”}
      کلی خوشحال و خندون رفتم رو بات زدم دیدم خیلی خنگ تر این حرفاست.

    • پوریا
      پوریا گفته:

      سلام سعید عزیز
      تا اونجایی که بنده اطلاع دارم از file_get_content باید به این شکل استفاده کنید = $update1 = file_get_contents(“php://input”);
      برای ارسال پیام به شکل دیگری، و در کد بالا مقدار چت آدی وجود نداره

  18. امیرحسین فرخ مهر
    امیرحسین فرخ مهر گفته:

    سلام واقعا ممنونم که همیشه پاسخگوی همه هستید و از سوال ها خسته نمیشید:) امیدوارم موفق باشید
    بازم من یه سوال دیگه دارم:))
    میشه به من بگید چطوری میتونم روبات رو طوری تنظیم کنم که تنها به کاربرانی جواب بده که داخل کانال من عضو هستن
    مثلا اگه شخص پیام دهنده عضو کانال نبود یهش بگه اول تو کانال عضو شه و بعد دوباره پیام بده
    این متد رو جدیدا تلگرام به قابلیت روبات ها اضافه کرده فکر کنم،الان خیلی از روبات ها هستن که اینجورین
    ممنون بابت همه راهنمایی هاتون

    پاسخ
    • پوریا
      پوریا گفته:

      سلام
      شما میبایست از منوی بالا crypto را انتخاب کنید و تنظیمات مربوطه را در آنجا انجام دهید.
      crypto سومین گزینه بعد از overviw است.
      موفق باشید.

    • هومن معین
      هومن معین گفته:

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

    • پوریا
      پوریا گفته:

      سلام
      معمولا بین چند ساعت تا چند روز طول می‌کشه تا اس اس ال برای شما فعال بشه.
      باز هم داکیومنشن کلودفایر مطالعه کنید.
      شاد و سلامت باشید.

  19. Mohammad
    Mohammad گفته:

    سلام، من هیچوقت حوصله نظر دادن تو سایت ها رو ندارم ولی واقعا این دفعه نتونستم!!
    آقا انصافا خیلی عالی توضیح دادی و کد روبات رو هم خیلی ساده و قابل فهم نوشتی. هیچ سایتی پیدا نکردم که عین شما به این خوبی گفته باشه همه مطالب رو.
    این ربات رو هم با استفاده از آموزش شما تونستم به اینجا برسونم : strangerpp_bot@
    بازم ممنونم :))

    پاسخ
  20. امین خراطیان
    امین خراطیان گفته:

    سلام خسته نباشید دو تا سوال داشتم
    ۱: کلود فیلر روی دامنه های ir هم جواب میده
    ۲: بعد اینکه گواهینامه ssl روی دامنه اومد دوباره باید dns های کلود فیلر رو به هاستی که خریدیم تغییر بدیم؟

    پاسخ
  21. مرتضی
    مرتضی گفته:

    سلام خیلی عالیه
    مهندس فقط هاستینگ اجازه استفاده از file_get_contents(“php://input”); رو نمیده و میگه از curl استفاده کنید چطوری میتونم تغییر بدم و از curl استفاده کنم لطفا راهنمایی نمایید
    ممنون

    پاسخ
  22. امیرحسین
    امیرحسین گفته:

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

    پاسخ
    • هومن معین
      هومن معین گفته:

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

    • پوریا
      پوریا گفته:

      سلام مهدی عزیز
      اگر مظور شما این است که تلگرام درخواست کاربر را به ربات شما ارسال می‌کند، و شما آن در خواست را به صورت json و در نهایت یک آرایه دریافت می‌کنید، اما با متد سند مسیج نمی‌توانید به کاربر پاسخ مد نظر خودتونو بدید
      ابتدا شرط های خود را چک کنید، مثلا اگر در جواب “سلام چطوری” می‌خواهید پاسخی بدهید، چکنید عبارت را صحیح نوشته باشید “سلام چطور ی” با عبارت قبل متفاوت است.
      منطق شرط خود را چک کنید
      اگر از این موارد نبود متد سند مسیج را یک بار برسی کنید ممکن است اطلاعات را به صورت نادرسی می‌فرستید، مواردی مانند اشتباه وارد گردن چت آدی و … را نیز در نظر بگیرید و چک کنید.
      کجا لاگ می‌ندازه؟ آیا خطایی هم دریافت می‌کنید با این مضمون ( شما به صورت نادرس اطلاعت را ارسال می‌کنید) یا هر نوع خطای دیگه؟

  23. Mhmdmlkn
    Mhmdmlkn گفته:

    سلام
    آخرین پیغامی که cloudflare به من داده پیغامه زیره و هنوز بعد از ۱۲ ساعت هیچ تغییری نکرده، الان باید چکار کنم؟
    Note: SSL certificate issuance may take up to 24 hours
    Status: Ineligible for SSL

    پاسخ
  24. meysam
    meysam گفته:

    ببخشید یه سوال داشتم
    از چه کدی برای این عمل زیر میشه استفاده کرد یا ایا نمونه کد دارین ممنون میشم بفرستید
    اینکه یک صفحه ای از سایت رو ربات بخونه مثلا این صفحه همیشه ۱ رو نمایش میده و وقتی به عدد ۳ رسید یا ۳ رو نمایش داد همون لحظه به کاربر پیام بده

    پاسخ
    • هومن معین
      هومن معین گفته:

      با سلام. اگر منظورتون این است که میخواهید صفحه ی اچ تی ام را پارس کنید تا اطلاعات را به دست بیاورید میتوانید از php simple html dum parser استفاده کنید. به وسیله این کتابخونه میتونید اچ تی ام ال رو پارس کنید و هر سناریویی دارید انجام دهید. موفق باشید

  25. meysam
    meysam گفته:

    ببخشید نمونه کد یا اموزشی دارین که بگه چجوری میتونیم دکمه رو درون دکمه بسازیم یعنی وقتی کسی روی یه دکمه زد بره و دکمه های خاص دیگه ای رو نمایش بده منظورم از دکمه همون کیبورد هستش

    پاسخ
    • هومن معین
      هومن معین گفته:

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

  26. meysam
    meysam گفته:

    ممنونم از کمکتون یه سوال داشتم که خیلی ممنون میشم اینم کمکم کنید اگه بخواییم تو کد نویسی php ربات در قسمت تکست اینتر داشته باشید در خروجی از چه کدی میشه استفاده کرد ؟

    پاسخ
    • پوریا
      پوریا گفته:

      سلام
      اگر منظورتون این که پیغامی که می‌خواهید چاپ کنید در دوخط باشه به این شکل عمل می‌کنیم.
      “salam \n chetori”
      و به این شکل برای کاربر نمایش داده می‌شه:
      salam
      chetori
      این هم لینکی در مورد PHP
      http://darkoobweb.com/php-learning-1/
      شاد و سلامت باشید.

  27. kogo
    kogo گفته:

    شرمنده یه سوال دیگه برام پیش اومد ارایه های من اینجوری دریافت میشن
    $message = $results->message;
    $text = $message->text;
    $chat = $message->chat;
    $user_id = $chat->id;
    اگه بخوام اسم کاربر یا همون first name رو هم دریافت کنم باید این جوری بنویسم ایا ؟
    $first_name= $message->first_name;

    پاسخ
  28. احمد
    احمد گفته:

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

    پاسخ
    • پوریا
      پوریا گفته:

      سلام احمد عزیز
      روند این آموزش بشکلی هست که کسانی که با زبان PHP آشنایی دارن می‌تونن ( آشنایی با مفاهیم اولیه) به راحتی کدهای نویشته شده را درک کنند.
      می‌تونید متد سند مسیج در این آموزش خودتون تغییر بدبد، یا برای ساخت کلید متدی بنویسید.
      کدها نوشته شده و توضیح داده شده هر کد چه کاری انجام میده.

  29. امیرحسین فرخ مهر
    امیرحسین فرخ مهر گفته:

    سلام خسته نباشید، من دوباره برام سوال پیش اومد که چطور میتونم به چند کاربر همزمان پیام ارسال کنم؟
    ممنون میشم پاسخ بدید

    پاسخ
    • پوریا
      پوریا گفته:

      سلام امیر حسین عزیز
      برای این کار شما باید چت آی دی کاربران خودتونو ذخیره کرده باشید (برای مثال در مای اس کیو ال)
      بعد یک حلقه ایجاد می کنید، و در متد سند مسیج قسمتی که می‌خواد چت آدی وارد بشه چت آی دی های کاربران از دیتابیس می‌خونید و در اون قرار می دید.
      شاد و سلامت باشید.

  30. امین قنبری
    امین قنبری گفته:

    من کد اولی را در یک فایل پی اچ پی نوشتم و توکن ار هم تغییر دادم.
    فایل را آپلود کردم روی هاستی که ssl اون را هم فعال کردم.
    وب هو کهم با موفقیت روی آدرس url فایل ست شد.
    الان به ربات پیام میدم، هیچ اتفاقی نمی افته…. دلیلش چیه؟

    پاسخ
    • پوریا
      پوریا گفته:

      سلام امین عزیز
      در صورتی که از ست بودن وب هوک و اس اس ال خودتون اطمینان دارید. کد زیر در ابتدای فایل پی اچ پی خودتون قرار بدید.
      error_reporting(E_ALL);
      ini_set(‘display_errors’, TRUE);
      ini_set(‘display_startup_errors’, TRUE);
      و دوباره درخواستی برای ربات ارسال کنید، در همون مکانی که فایل پی اچ پی شما قرار داره فایلی ایجاد می‌شه که خطا یا مشکل مربوطه درون اون نوشته می‌شه.
      همچنین می‌تونید JSON که به سمتتون میاد دریافت کنید و ببینید چه پیامی داخلش وجود داره.
      شاد و سلامت باشید.

    • پوریا
      پوریا گفته:

      سلام
      فایل php مورد نظر را درون هاست‌تون می‌تونید قرار بدید، حالا یا در روت، یا پوشه یا پوشه‌هایی ایجاد کنید و درون اون قرار بدید.
      قسمت بعد معرفی مسیری هست که فایل php ربات شما در اونجا واقع شده.
      شاد و سلامت باشید.

  31. sepehr
    sepehr گفته:

    سلام من هم مشکلم مثل دوست اولی هستش یعنی هم وب هوک درسته و هو ssl ولی رباتمرکار نمیکنه الان هم این کدی که گفتید رو اضافه کردم و پیغام زیر رو بهم داد
    error_reporting(E_ALL); ini_set(‘display_errors’, TRUE); ini_set(‘display_startup_errors’, TRUE);
    خواهش جواب بدید چون کارم خیلی مهمه

    پاسخ
    • پوریا پرهامی
      پوریا پرهامی گفته:

      سلام
      این سه کد کجا به شما نمایش می‌ده؟
      این سه خط کد زمانی که خطایی رخ بده برای شما فایلی به نام log.txt ایجاد می‌کنن و پیام خطای مربوطه در اون فایل چاپ می‌شه
      این سه استیتمنت در این API هم استفاده شده . https://github.com/PouriaParhami/vstba

      اگر اس اس ال و وب هوک شما به درستی ست شده باشن، تنها احتمال خطای نگارشی در دستوراتی است که نوشتید.

  32. محمد
    محمد گفته:

    من ssl دارم و وقتی هوک رو به تلگرام معرفی کردم گفت set شد !
    الان به رباتم متن ارسال میکنم چیزی جواب نمیده …
    بنظر شما زمان میبره که تلگرام فعالش کنه ؟

    پاسخ
    • پوریا پرهامی
      پوریا پرهامی گفته:

      سلام، اگر پیغام ست شدن داده شده پس ست شده، مشکل از جای دیگه است، کامنت‌های قبلی بخونید ممکنه مشکل شما هم مثل دوستان دیگه باشه

  33. حامد خسروی
    حامد خسروی گفته:

    سلام . من می خوام متن دکمه ها از داخل یک دیتابیس و درون بک چرخه فراخوانی بکنم . میشه یک راهنمایی کنید؟
    مثلا توی یکی از تیبل های دیتابیسم چهار تا قسمت دارم . می خوام اونها بیاد به جای دکمه ها . میشه؟

    پاسخ
    • پوریا پرهامی
      پوریا پرهامی گفته:

      سلام
      درون هاست تون باید فایل بسازید
      اگر از Cpanel استفاده می‌کنید، وارد file manager بشید، بعد وارد public_html
      در سمت چپ بالا نوشته شده file، folder
      می‌تونید فولدری ایجاد کنید درون اون فایلی با پسوند php بسازید یا اینکه در همون public_html فایلی با پسوند php بسازید.
      شاد و سلامت باشید.

  34. sajad
    sajad گفته:

    [۱۴-Feb-2018 04:53:05 UTC] PHP Warning: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in on line 35
    [۱۴-Feb-2018 04:53:05 UTC] PHP Warning: file_get_contents(https://api.telegram.org/bot44/sendMessage?chat_id=44&text=%D8%B4%D8%B1%D9%88%D8%B9+%D9%85%DB%8C+%DA%A9%D9%86%DB%8C%D9%85): failed to open stream: no suitable wrapper could be found in sitedladdkonbot.php on line 35
    [۱۴-Feb-2018 04:53:06 UTC] PHP Warning: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in sitedladdkonbot.php on line 35
    [۱۴-Feb-2018 04:53:06 UTC] PHP Warning: file_get_contents(https://api.telegram.org/botjj/sendMessage?chat_id=63&text=salam+be+ruye+mahet): failed to open stream: no suitable wrapper could be found in on line 35
    این خطا پیه کسی میدونه ؟

    پاسخ
    • پوریا پرهامی
      پوریا پرهامی گفته:

      سلام
      ممکنه سرور اجازه استفاده از این فانکشن به شما نداده باشه، با مسئول هاستینگ تون تماس بگرید و در این مورد سوال کنید.
      allow_url_include در php.ini باید Enable باشد .

  35. امیرعباس
    امیرعباس گفته:

    سلام و درود
    من میخوام در جواب کاربر، در یکی از کیس ها، یک تصویر توسط ربات برای کاربر ارسال بشه.قالب دستوریش رو می گین چطوریه؟

    تشکر

    پاسخ
  36. alireza
    alireza گفته:

    سلام و تشکر فروان بابت آموزش خوبتون
    همه کارا رو انجام دادم رباتم کار نمیکنه .اون سه خطم که به اول پی اچ پیم اضافه کردم توی log ایجاد شده این دو خط ارور رو داد
    [۰۲-Mar-2018 16:23:08 UTC] PHP Warning: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /home/yadnetto/public_html/myphpbot.php on line 12
    [۰۲-Mar-2018 16:23:08 UTC] PHP Warning: file_get_contents(https://api.telegram.org/botToken/sendmessage?chat_id=115182326&text=hello): failed to open stream: no suitable wrapper could be found in /home/yadnetto/public_html/myphpbot.php on line 12
    مشکلش چیه و باید چیکار کنم؟؟؟

    پاسخ
    • پوریا پرهامی
      پوریا پرهامی گفته:

      سلام
      با مدیر سرور تماس بگیرید و بگید می‌خواهید از file_get_contents استفاده کنید، اگر گفتند نمی‌تونید و این امکان به شما ندادن باید از curl برای ارسال و دریافت اطلاعات استفاده کنید.
      شاد و سلامت باشد.

  37. اعلمي
    اعلمي گفته:

    با سلام و عرض ارادت در آموزش سايت خوبتان ، در وب هوک غيرفعالStatus: Website not active (DNS modification pending) و نام سرور جايگزين قبلي با نام جديد نشده و نادر ست است و the nameservers provided و ست نشده و و در ison پيغام: {“ok”:true,”result”:true,”description”:”Webhook is already deleted”} ميدهد لطفا راهنمايي فرماييد چگونه نام قبلي به جديد انجام و وب هوك فعال و ست شود با تشكر

    پاسخ
    • پوریا پرهامی
      پوریا پرهامی گفته:

      سلام
      برای مورد اول با شرکتی که از آن هاست تهیه کرده‌اید تماس بگیرد سریع‌تر و دقیق‌تر کمکتون می‌کنن
      برای مورد دوم
      api.telegram.org/bot/setWebhook?url=https://x.com/x.php
      بعد از bot تکن ای پی آی خودتون قرار بدید و بعد از url= آدرس دقیق فایل ربات برای مثال من نوشتم :
      http://x.com/x.php
      شاد و سلامت باشید.

  38. farshad
    farshad گفته:

    صفحه php که میسازیم و کد رو داخلش قرار میدیم با داخل تگ html باشه ؟
    چون من تمام مراحل بالا رو رفتن ، ssl هم داره دامنه ام ولی ربات کار نمیکنه

    پاسخ
    • هومن معین
      هومن معین گفته:

      با سلام. خیر نیازی نیست داخل تگ HTML باشه.
      این سه خط کد را در ابتدای کدتون قرار بدید. کد را اجرا کنید و خطای مربوطه را بررسی کنید.
      error_reporting( E_ALL );ini_set( 'display_errors', true );ini_set( 'display_startup_errors', true );
      در شاخه ی اصلی که فایل PHP قرار دارد یک فایل ایجاد میشود و خطاها را به شما نشان میدهد. احتمالا خطای نگارشی و یا منظقی دارید. موفق باشید.

  39. اعلمي
    اعلمي گفته:

    با سلام رباط ساخته شده و فايل كد نويسي مطابق پي اچ پي فوق انجام و وبهوك هم با آن ست شده ولي ربات كار نمي كند ، چگونه با يك سرور ايجاد شده مرتبط كنيم و چگونه ربات را امتحان كنم مراحل تست و آزمايش آنرا بفرماييد

    پاسخ

تعقیب

  1. […] ساخت ربات تلگرام (JAVA)آموزش ساخت ربات تلگرام (PHP) Tagsآموزش ساخت ربات […]

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

READ  چگونه از طریق ربات از کاربر فایل دریافت کنیم؟
READ  آموزش php مقدماتی قسمت سوم