ساخت ربات تلگرام با fat-free

ساخت ربات تلگرام با fat-free

پیاده سازی و ساخت ربات تلگرام با فریم ورک fat-free بسیار ساده است البته واسه برنامه نویسا 🙂

خب بعد از پیاده سازی fat-free framework برای راحتی کار با ربات باید sdk مربوط به ربات رو به فریم ورک اضافه کنیم

سایت اصلی مربوط به مستندات پیاده سازی telegram-bot-sdk

برای نصب این کتابخونه به وسیله composer به فولدر پروژه فریم ورک رفته و کد زیر را در ترمینال یا cmd ویندوز وارد کنید

composer require irazasyed/telegram-bot-sdk ^2.0

خیلی خب حالا در هر controller که میخواد از sdk ربات تلگرام استفاده کنید کد زیر رو به ابتدای کد های php اضافه می کنیم

use Telegram\Bot\Api;

برای ساخت ربات در تلگرام هم از ربات botfather باید اسنفاده کنید دیگه این مطالب ساده رو توضیح نمیدیم 🙂

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

$telegram = new Api('BOT TOKEN');

برای ارتباط با سرور های تلگرام سرور شما باید گواهی ssl داشته باشه حالا ادرس سایت خودتون رو (webhook) به این صورت به تلگرام می فرستید

در مرورگرتون ادرس زیر رو وارد کنید و ادرس سرور خودتون رو جایگزین کنید

https://api.telegram.org/bot<token>/setWebhook?url=https://mywebsite.com/path/to/giveawaysbot.php

به جای <token> هم باید توکن رباتتون رو قرار بدید

حالا هر بار که کاربر پیامی در ربات ارسال میکنه تلگرام اطلاعات مربوطه رو به اون ادرسی که توی مرحله قبل وارد کردید میفرسته برای گرفتن این اطلاعات که به صورت جیسون هم هست به این صورت عمل می کنیم

$json=json_decode(file_get_contents('php://input'));

از اطلاعاتی که تلگرام برامون ارسال می کنه میشه ای دی چت کاربر رو به دست اورد این ای دی برای ارسال پیام به کاربر لازمه

ارسال پیام به ربات

$telegram = new Api('BOT TOKEN');

$response = $telegram->sendMessage([
  'chat_id' => 'CHAT_ID', 
  'text' => 'Hello World'
]);

$messageId = $response->getMessageId();

برای فوروارد کردن کافیه اید کد رو به ارایه های بالا اضافه کنید

'from_chat_id' => 'FROM_CHAT_ID',

ارسال عکس

$telegram = new Api('BOT TOKEN');

$response = $telegram->sendPhoto([
  'chat_id' => 'CHAT_ID', 
  'photo' => 'path/to/photo.jpg', 
	'caption' => 'Some caption'
]);

$messageId = $response->getMessageId();

ارسال صدا


$telegram = new Api('BOT TOKEN');

$response = $telegram->sendAudio([
  'chat_id' => 'CHAT_ID', 
  'audio' => 'path/to/audio.mp3',
]);

$messageId = $response->getMessageId();

ارسال فایل

$telegram = new Api('BOT TOKEN');

$response = $telegram->sendDocument([
  'chat_id' => 'CHAT_ID', 
  'document' => 'path/to/document.pdf',
	'caption' => 'This is a document',
]);

$messageId = $response->getMessageId();

ارسال استیکر

$telegram = new Api('BOT TOKEN');

$response = $telegram->sendSticker([
  'chat_id' => 'CHAT_ID', 
  'sticker' => 'path/to/sticker.webp',
]);

$messageId = $response->getMessageId();

ارسال فیلم

$telegram = new Api('BOT TOKEN');

$response = $telegram->sendVideo([
  'chat_id' => 'CHAT_ID', 
  'video' => 'path/to/video.mp4',
]);

$messageId = $response->getMessageId();

ارسال صدا

$telegram = new Api('BOT TOKEN');

$response = $telegram->sendVoice([
  'chat_id' => 'CHAT_ID', 
  'voice' => 'path/to/voice.ogg',
]);

$messageId = $response->getMessageId();

ارسال موقعیت مکانی

$telegram = new Api('BOT TOKEN');

// Sends San Francisco, CA Location.
$response = $telegram->sendLocation([
  'chat_id' => 'CHAT_ID', 
  'latitude' => 37.7576793,
	'longitude' => -122.5076402,
]);

$messageId = $response->getMessageId();

و برای ارسال دستور چت به ربات (مستندات)

$telegram = new Api('BOT TOKEN');

$telegram->sendChatAction([
  'chat_id' => 'CHAT_ID', 
  'action' => 'upload_photo'
]);

دانلود فایل از ربات

$telegram = new Api('BOT TOKEN');

$response = $telegram->getFile(['file_id' => 'ABC12345XYZ6789...']);

حروجی کد بالا به این صورته :

{
    "ok": true,
    "result": {
        "file_id": "ABC12345XYZ6789...",
        "file_size": 39082,
        "file_path": "document/file_1.webp"
    }
}

زمانی که کاربر فایلی در ربات اپلود میکنه تلگرام یه فیلد به اسم file_id به شما بر میگردونه اگه تو قسمت ارسال تصویر مقدار این فیلد رو در photo قرار بدید عکسش ارسال میشه اما اگر میخواید فایل رو دانلود کنید و یا تو سرورتون اپلود کنید می تونید از ادرس پایین به فایل دسترسی پیدا کنید

https://api.telegram.org/file/bot/

که مقدار توکن و file_path یاید جایگزین بشه

برای قرار دادن کیبرد به این صورت عکل می کنیم

$keyboard = [
    ['7', '8', '9'],
    ['4', '5', '6'],
    ['1', '2', '3'],
         ['0']
];

$reply_markup = $telegram->replyKeyboardMarkup([
	'keyboard' => $keyboard, 
	'resize_keyboard' => true, 
	'one_time_keyboard' => true
]);

$response = $telegram->sendMessage([
	'chat_id' => 'CHAT_ID', 
	'text' => 'Hello World', 
	'reply_markup' => $reply_markup
]);

$messageId = $response->getMessageId();

برای حذف کیبورد

$reply_markup = $telegram->replyKeyboardHide();

$response = $telegram->sendMessage([
	'chat_id' => 'CHAT_ID', 
	'text' => 'Hello World', 
	'reply_markup' => $reply_markup
]);

و در اخر برای ریپلی کردن کیبرد

$reply_markup = $telegram->forceReply();

$response = $telegram->sendMessage([
	'chat_id' => 'CHAT_ID', 
	'text' => 'Hello World', 
	'reply_markup' => $reply_markup
]);

 


Leave a Reply