اگر تا حالا رباتی دیدی که زیر هر پیام چند تا دکمه شیک اینلاین داره (مثلاً «خرید»، «اطلاعات بیشتر»، «بازگشت»)، دقیقاً همون چیزی رو میخوایم بسازیم 😎
تو این پست میریم سراغ ساخت یک ربات Node.js با Telegraf که:
• یک دستور
/start داره ✅• زیر پیام، Inline Keyboard نشون میده ✅
• روی هر دکمه کلیک بشه، بدون ارسال پیام جدید، فقط متن همون پیام رو آپدیت میکنه ✅
منبع اصلی این ایده از داکیومنت رسمی Telegraf هست:
telegraf.js.org - Inline Keyboards
برای شروع، فقط لازمه Node.js نصب باشه و یک Bot Token هم از @BotFather گرفته باشی.
۱️⃣ نصب Telegraf
داخل پوشه پروژه:
npm init -y
npm install telegraf
۲️⃣ یک ربات ساده با Inline Keyboard
فایل مثلاً
bot.js:const { Telegraf, Markup } = require('telegraf');
// BotFather توکن رباتت رو اینجا بذار
const bot = new Telegraf('YOUR_BOT_TOKEN_HERE');
// /start - نمایش منوی اینلاین
bot.start((ctx) => {
return ctx.reply(
'سلام 👋\nیک گزینه انتخاب کن:',
Markup.inlineKeyboard([
[
Markup.button.callback('📊 وضعیت ربات', 'status'),
Markup.button.callback('ℹ️ درباره', 'about'),
],
[
Markup.button.url('🌐 وبسایت رسمی', 'https://core.telegram.org/bots'),
],
])
);
});
// هندل کردن callbackهای اینلاین
bot.action('status', async (ctx) => {
await ctx.answerCbQuery(); // بستن لودینگ کوچک تلگرام
await ctx.editMessageText('✅ ربات آنلاین است و مشکلی ندارد.');
});
bot.action('about', async (ctx) => {
await ctx.answerCbQuery();
await ctx.editMessageText(
'این یک نمونه ربات ساده با Inline Keyboard است.\n' +
'با Telegraf میتوانی رباتهای خیلی حرفهایتر بسازی 😉'
);
});
// اجرای ربات با Long Polling
bot.launch().then(() => {
console.log('Bot started...');
});
// برای shutdown تمیز (مخصوص سرورهای واقعی)
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));حالا فقط کافیه:
node bot.js
رو اجرا کنی و تو تلگرام به رباتت
/start بفرستی. میبینی که دکمهها زیر پیام ظاهر میشن و با کلیک روی هرکدوم، متن همون پیام آپدیت میشه؛ بدون اینکه چت شلوغ بشه ✨نکات ریز ولی مهم 👇
• از
ctx.answerCbQuery() استفاده کن تا اون لودینگ ریز روی دکمه گیر نکنه.• برای دکمههایی که باید به لینک بیرونی برن، از
button.url استفاده کن.• برای ساخت منوهای چندسطحی، میتونی داخل هر
bot.action دوباره یک Inline Keyboard جدید بفرستی یا پیام رو با editMessageText و کیبورد جدید آپدیت کنی.امتحانش کن، منوی اینلاین تقریباً تو هر ربات جدیای لازمه و وقتی دستت بیفته، نصف راه UX خوب رو رفتی 🚀
🔖 #TelegramBot #ربات #تلگرام #Telegram_Bot #Node_js #Telegraf #Inline_Keyboard #Programming_Tutorial #Realtime_Bots
👤 Developix
💎 Channel: @DevelopixRobot