یه قابلیت خیلی کاربردی تو Telegram Bot اینه که کاربر لازم نیست چیزی تایپ کنه؛ فقط با زدن دکمه کار انجام میشه. دقیقاً همون inline keyboardهایی که زیر پیام ظاهر میشن ✅
توی این پست، با هم یه ربات ساده میسازیم که:
• با دستور
/start یه پیام میفرسته• زیرش دو تا دکمه شیشهای نشون میده
• روی هر دکمه کلیک بشه، جواب جداگانه برمیگردونه
این مثال بر اساس کتابخونهی رسمی و محبوب python-telegram-bot نسخه ۲۰ به بالاست و میتونی داک رسمیش رو اینجا ببینی:
docs.python-telegram-bot.org
اول کتابخونه رو نصب کن:
pip install python-telegram-bot --upgrade
تو کد پایین فقط کافیه
BOT_TOKEN خودت رو از @BotFather بذاری و اجرا کنی. ربات روی long polling کار میکنه و نیاز به سرور https یا webhook نداره، برای شروع فوقالعادهست 👇from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import (
ApplicationBuilder,
CommandHandler,
CallbackQueryHandler,
ContextTypes,
)
BOT_TOKEN = "YOUR_BOT_TOKEN_HERE"
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
keyboard = [
[
InlineKeyboardButton("📊 وضعیت سرور", callback_data="status"),
InlineKeyboardButton("ℹ️ درباره ربات", callback_data="about"),
]
]
reply_markup = InlineKeyboardMarkup(keyboard)
await update.message.reply_text(
"سلام 👋\nیکی از گزینههای زیر رو انتخاب کن:",
reply_markup=reply_markup,
)
async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
query = update.callback_query
await query.answer()
if query.data == "status":
text = "سرور الان آنلاینه ✅\nCPU: 23% | RAM: 58%"
elif query.data == "about":
text = "این یه ربات نمونه با inline keyboard هست 🤖"
else:
text = "گزینه نامعتبر" # حالت پیشفرض
await query.edit_message_text(text)
if __name__ == "__main__":
app = ApplicationBuilder().token(BOT_TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CallbackQueryHandler(button_handler))
app.run_polling()
چند نکته ریز ولی مهم 👇
• حتماً تو نسخههای جدید باید از
async/await استفاده کنی، مثل کد بالا.•
callback_data بهتره کوتاه، بدون space و قابل پارس کردن باشه (مثلاً user:123 یا cmd:stats).• به جای
reply_text میتونی بعداً از edit_message_text تو خود دستور /start هم استفاده کنی تا ربات شبیه منوهای چند مرحلهای بشه.این ساختار پایه بعداً راحت به Database، سیستم تیکت، فرم ثبت سفارش یا پنل ادمین در خود تلگرام وصل میشه 🙌
امتحانش کن، یه ربات بساز و به یه دوست برنامهنویس هم بفرست تا با هم توسعهش بدین 🤝
🔖 #TelegramBot #ربات #تلگرام #Telegram_Bot #Python #Inline_Keyboard #Long_Polling #python_telegram_bot
👤 Developix
💎 Channel: @DevelopixRobot