تو خیلی از کانالها و گروهها، رباتهایی میبینی که آزمون چهارگزینهای (Quiz) برگزار میکنن، امتیاز میدن و حتی جواب درست رو هم نشون میدن. امروز با هم یک نسخه ساده و عملی از همین ایده رو با Python و کتابخونهٔ pyTelegramBotAPI میسازیم 😎
ایده اینه:
• کاربر /quiz رو میفرسته.
• ربات یک سوال چهارگزینهای با دکمههای Inline میفرسته.
• با کلیک روی گزینه، ربات میگه درست بود یا غلط.
این مدل ربات برای کوییزهای آموزشی، آزمون زبان، تمرین الگوریتم و حتی سرگرمی توی گروهها عالیه.
این کد رو براساس داکیومنت رسمی Bot API و کتابخونهٔ pyTelegramBotAPI نوشتیم و روی BotFather معمولی کاملاً جواب میده ✅
اول با pip نصب کن:
pip install pyTelegramBotAPI
سپس یک فایل مثل
quiz_bot.py بساز و این کد رو داخلش بذار (توکن رو از BotFather بردار و جایگزین کن):import telebot
from telebot import types
API_TOKEN = "YOUR_BOT_TOKEN_HERE"
bot = telebot.TeleBot(API_TOKEN)
# یک سوال نمونه
QUESTION = "کدام زبان برای توسعه ربات تلگرام در این مثال استفاده شده است؟"
OPTIONS = ["Java", "Python", "PHP", "Go"]
CORRECT_INDEX = 1 # Python
@bot.message_handler(commands=["start"])
def send_welcome(message):
bot.reply_to(message, "سلام! برای شروع آزمون دستور /quiz رو بفرست ✅")
@bot.message_handler(commands=["quiz"])
def send_quiz(message):
keyboard = types.InlineKeyboardMarkup()
for i, option in enumerate(OPTIONS):
btn = types.InlineKeyboardButton(
text=option,
callback_data=f"quiz_{i}"
)
keyboard.add(btn)
bot.send_message(
message.chat.id,
QUESTION,
reply_markup=keyboard
)
@bot.callback_query_handler(func=lambda call: call.data.startswith("quiz_"))
def handle_quiz_answer(call):
index = int(call.data.split("_")[1])
if index == CORRECT_INDEX:
text = "آفرین 🎉 جواب درست بود (Python)."
else:
correct_option = OPTIONS[CORRECT_INDEX]
text = f"❌ نه! جواب درست: {correct_option}"
# پاسخ به همون پیام
bot.answer_callback_query(call.id, text, show_alert=True)
if __name__ == "__main__":
print("Quiz bot is running...")
bot.infinity_polling()
چند نکتهٔ ریز ولی مهم 👇
• حتماً توکن واقعی ربات رو جایگزین
YOUR_BOT_TOKEN_HERE کن.• اگر روی سرور با محدودیت Network هستی، ممکنه نیاز بشه بجای
infinity_polling() از webhook استفاده کنی (طبق داک رسمی: setWebhook).• میتونی لیست
OPTIONS و متن QUESTION رو از یک فایل JSON یا دیتابیس بخونی تا رباتت چندین سوال پشتسرهم بپرسه.امتحانش کن، روی چندتا دوستت تست بگیر و بعد کمکم امکاناتی مثل نمرهدهی، رتبهبندی و زمانبندی آزمون رو بهش اضافه کن 🚀
🔖 #TelegramBot #ربات #تلگرام #Telegram_Bot #Python #pyTelegramBotAPI #Quiz_Bot #InlineKeyboard
👤 Developix
💎 Channel: @DevelopixRobot