
سرویس Cloudflare Workers محیطی قدرتمند به شما میده تا برنامههاتون رو به صورت رایگان اجرا کنید و اونها رو با بقیه به اشتراک بگذارید. توی این آموزش به شما نشون ممیدم که چطور ربات تلگرام خودتون رو به سادگی روی این سرویس اجرا کنید. برای این کار به دانش کلی از زبان JavaScript یا TypeScript نیاز دارید.
۱. آماده کردن محیط توسعه برنامه
قبل از اینکه شروع کنیم باید wrangler رو نصب کنید. برای اینکار توی cmd دستور زیر رو اجرا کنید:
npm install wrangler
نکته: اگر نیاز به نصب npm دارید، به سایت nodejs.org برید و Node.js رو نصب کنید.
۲. یا استفاده از قالب تلگرام Cloudflare یک پروژه بسازید.
برای اینکار، بعد از نصب wrangler به فولدری که میخواید پروژه رو ایجاد کنید برید، cmd رو اونجا باز کنید و دستور زیر رو اجرا کنید:
npm create cloudflare@latest MY_WORKER_NAME
به جای MY_WORKER_NAME اسم دلخواهتون رو بنویسید. اگر اولین باره که این دستور رو اجرا میکنید، یک پنجره جدید توی مرورگر باز میشه که باید وارد حساب Cloudflare بشید و مراحلی که میگه رو طی کنید تا به سایت Cloudflare و حسابتون متصل بشه.
وقتی این پیغام رو نشون داد: What would you like to start with این آدرس رو وارد کنید و اینتر رو بزنید:
https://github.com/m-sarabi/cloudflare-telegram-bot
و بعدش Typescript رو انتخاب کنید.
در ادامه ازتون میپرسه که آیا میخواید به git وصل بشید و یا پروژهتون رو پیاده کنید. در هر دو مورد گزینه No رو بزنید. وقتی پیغام SUCCESS Application created successfully ظاهر شد یعنی پروژه با موفقیت ساخته شده.
۱. حالا به ربات BotFather تو تلگرام برید و با دستور newbot یک ربات جدید بسازید.
۲. مراحلی که نشون میده رو طی کنید تا کد API Token رو بهتون بده.
۳. حالا به پوشهای که پروژه رو ساختید برید و فایل wrangler.toml رو باز کنید و چند خط زیر رو بهش اضافه کنید:
[vars] SECRET = "<SECRET>" TOKEN = "<API_TOKEN>"
بعد از این توی فولدر پروژه cmd رو باز کنید و دستور زیر رو اجرا کنید تا کدهایی که بالا وارد کردید به فایل worker-configuration.d.ts اضافه بشن.
حالا به جای جذابش رسیدیم. توی این مقاله یک نمونه ربات خیلی ساده رو پیاده میکنید:
وقتی کاربری وارد ربات شد و دکمه شروع رو زد یا دستور start رو وارد کرد، ربات یک پیغام با یک دکمه نشون میده. وقتی کاربر دکمهی پیغام رو زد، دکمه حذف میشه و ربات یک پیغام دیگه میفرسته.
تمام توابعی که برای مدیریت update های ربات وجود دارن داخل پوشه src/telegram/handlers هستن. به این پوشه برید و handleMessage.ts رو طبق کد زیر تغییر بدید:
import { tg } from '../lib/methods'; export async function handleMessage(message: tgTypes.Message) { const messageText = message.text; const chatId = message.chat.id; if (messageText === '/start') { await tg.sendMessage({ text: 'به ربات من خوش آمدید. برای شروع قوانین ربات را قبول کنید', chat_id: chatId, reply_markup: { inline_keyboard: [ [{ text: 'قبول میکنم', callback_data: 'accept_rules' }] ] } }); } }
اینجا بعد از راف دستور start با استفاده از تابع tg.sendMessage یک پیغام با یک دکمه به کاربر میفرستیم.
برای نمایش پیغام وقتی کاربر دکمهای که به پیغام وصل هست رو فشار داد، فایل handleCallbackQuery.ts رو مطابق کد زیر تغییر بدید:
import { tg } from '../lib/methods'; export async function handleCallbackQuery(callbackQuery: tgTypes.CallbackQuery) { const data = callbackQuery.data; const messageId = callbackQuery.message?.message_id; const chatId = callbackQuery.message?.chat.id; if (messageId && chatId) { if (data === 'accept_rules') { await tg.editMessageReplyMarkup({ chat_id: chatId, message_id: messageId, reply_markup: undefined }); await tg.sendMessage({ chat_id: chatId, text: 'برای قبول قوانین متشکرم' }); } } }
۱. حالا cmd رو توی پوشه اصلی پروژه باز کنید و دستور زیر رو اجرا کنید:
wrangler deploy
۲. به داشبورد حساب cloudflare خودتون dash.cloudflare.com برید و از منوی کناری گزینه Workers & Pages رو انتخاب کنید.
۳. کنار اسم پروژهای که ساختید Visit رو بزنید. یک صفحهی دیگه توی مرورگر باز میشه.
۴. عبارت زیر رو به آخر آدرس اضافه کنید و دکه اینتر رو بزنید:
/registerWebhook
اگر پیغام Webhook registered نمایش داده شد یعنی موفقیتآمیز بوده.
حالا میتونید به رباتی که ساختید برید و دکمه Start یا دستور start/ رو وارد کنید تا ربا پیغامی که ساختیم رو بفرسته.
تبریک. شما با موفقیت ربات خودتون رو با استفاده از ابزار قدرتمند Cloudflare و قالب Telegram ساختید. حالا میتونید رباتتون رو گسترش بدید.
اگر این مطلب مفید بود لطفا به آدرس GitHub قالب تلگرام برید و یک ستاره بهش بدید.
از اینکه این مطلب رو تا آخر خوندید سپاسگذارم.