🎉 خبر خوب برای دوستداران فیلم و سریال 🎬
@shodambot
✨ زیرنویس فارسی به ربات ما اضافه شد! از این به بعد میتونید فیلمها و سریالهای مورد علاقتون رو با زیرنویس فارسی دانلود و تماشا کنید.
📥 برای دریافت زیرنویسها، کافیه اسم فیلم یا سریال رو جستجو کنید و لینک زیرنویس رو همراه با لینکهای دانلود ببینید!
از تماشای فیلمها با زیرنویس لذت ببرید! 🎥🍿
23 سپتامبر 2024
H برای ساخت یک ماشین حساب ساده در تلگرام که دو عدد را از کاربر دریافت کرده و جمع آنها را محاسبه کند، باید وضعیت مکالمه با کاربر را مدیریت کنید تا بدانید در هر لحظه چه مرحلهای از تعامل هستید. برای این کار میتوانید از ConversationHandler در کتابخانه python-telegram-bot استفاده کنید. مراحل کلی کار: 1. دریافت عدد اول از کاربر. 2. دریافت عدد دوم از کاربر. 3. محاسبه جمع و ارسال نتیجه به کاربر. در ادامه، کد نمونهای ارائه میشود که این کار را انجام میدهد. --- ### **کد نمونه با استفاده از python-telegram-bot نسخه 13.x** ابتدا اطمینان حاصل کنید که نسخه 13.x از کتابخانه را نصب کردهاید: pip install python-telegram-bot==13.15 **کد:** from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, ConversationHandler # تعریف مراحل مکالمه FIRST_NUMBER, SECOND_NUMBER = range(2) def start(update, context): update.message.reply_text('سلام! لطفاً عدد اول را وارد کنید:') return FIRST_NUMBER def first_number(update, context): # ذخیره عدد اول context.user_data['first_number'] = update.message.text update.message.reply_text('حالا عدد دوم را وارد کنید:') return SECOND_NUMBER def second_number(update, context): first_number = context.user_data['first_number'] second_number = update.message.text try: # تبدیل ورودیها به عدد num1 = float(first_number) num2 = float(second_number) result = num1 + num2 update.message.reply_text(f'نتیجه: {num1} + {num2} = {result}') except ValueError: update.message.reply_text('لطفاً اعداد معتبر وارد کنید.') return ConversationHandler.END def cancel(update, context): update.message.reply_text('عملیات لغو شد.') return ConversationHandler.END def main(): # جایگزین 'YOUR_TOKEN' با توکن ربات خود updater = Updater('YOUR_TOKEN', use_context=True) dp = updater.dispatcher # تعریف ConversationHandler conv_handler = ConversationHandler( entry_points=[CommandHandler('start', start)], states={ FIRS… خواندن کامل ←H async def start(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text('سلام! لطفاً عدد اول را وارد کنید:') return FIRST_NUMBER async def first_number(update: Update, context: ContextTypes.DEFAULT_TYPE): context.user_data['first_number'] = update.message.text await update.message.reply_text('حالا عدد دوم را وارد کنید:') return SECOND_NUMBER async def second_number(update: Update, context: ContextTypes.DEFAULT_TYPE): first_number = context.user_data['first_number'] second_number = update.message.text try: num1 = float(first_number) num2 = float(second_number) result = num1 + num2 await update.message.reply_text(f'نتیجه: {num1} + {num2} = {result}') except ValueError: await update.message.reply_text('لطفاً اعداد معتبر وارد کنید.') return ConversationHandler.END async def cancel(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text('عملیات لغو شد.') return ConversationHandler.END def main(): application = ApplicationBuilder().token('YOUR_TOKEN').build() conv_handler = ConversationHandler( entry_points=[CommandHandler('start', start)], states={ FIRST_NUMBER: [MessageHandler(filters.TEXT & ~filters.COMMAND, first_number)], SECOND_NUMBER: [MessageHandler(filters.TEXT & ~filters.COMMAND, second_number)], }, fallbacks=[CommandHandler('cancel', cancel)], ) application.add_handler(conv_handler) application.run_polling() if name == 'main': main() ` تفاوتهای اصلی: - استفاده از `async` و `await` در توابع. - استفاده از `ApplicationBuilder` به جای `Updater`. - تغییر در واردات و فیلترها. --- جمعبندی: - از ConversationHandler برای مدیریت مکالمات چند مرحلهای استفاده کنید. - با استفاده از context.user_data اطلاعات موقت کاربر را بین مراحل ذخیره کنید. - حتماً ورودیهای کاربر را اعتبارسنجی کنید تا از بروز خطا جلوگیری شود. - در صورت نیاز، میتوا… خواندن کامل ←