Українська
Відкрити в Telegram

Гілка سلام دوستان من میخوام یه ماشین حساب ساده برای تلگرام بنویسم برای تمرین و اینجا به مشکل خوردم که میخوام دو تا ورود ی که ا…

3 повідомлення · –
👽
سلام دوستان من میخوام یه ماشین حساب ساده برای تلگرام بنویسم برای تمرین و اینجا به مشکل خوردم که میخوام دو تا ورود ی که از کاربر میگیرمو با هم جمع کنم به حاصل رو بدم به خروجی حالا ورودی اول رو میگیرم ولی ورودی دوم رو نمیدونم چجوری بگیرم و ذخیره کنم تا بتونم با هم جمع بزنم اگه کسی بلده لطفا کمک کنید
  1. 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={ FIRST_NUMBER: [MessageHandler(Filters.text & ~Filters.command, first_number)], SECOND_NUMBER: [MessageHandler(Filters.text & ~Filters.command, second_number)], }, fallbacks=[CommandHandler('cancel', cancel)], ) dp.add_handler(conv_handler) # شروع ربات updater.start_polling() updater.idle() if __name__ == '__main__': main() --- توضیحاتواردات کتابخانه‌ها:نه‌ها:** از کتابخانه python-telegram-bot برای ساخت ربات تلگرام استفاده می‌تعریف مراحل مکالمه:کالمه:** با استفاده از FIRST_NUMBER و SECOND_NUMBER مراحل را مشخص می‌تابع start:start:** مکالمه را شروع کرده و از کاربر عدد اول را درخواست می‌کند. - **تابع first_number:** عدد اول را دریافت و در context.user_data ذخیره می‌کند، سپس عدد دوم را درخواست می‌کند. - **تابع second_number:** عدد دوم را دریافت کرده، هر دو عدد را به نوع float تبدیل می‌کند، جمع را محاسبه و نتیجه را به کاربر تابع cancel:**تابع cancel:** در صورت نیاز به لغو عملیات، مکالمه را تابع main:- **تابع main:** ربات را راه‌اندازی می‌کند و ConversationHandler را اضافهنکات مهم: *توکن ربات:- **توکن ربات:** حتماً توکن ربات خود را از BotFather دریافت کرده و به جای 'YOUR_TOKEN' قرار دهید. - **مدیریت خطاها:** در تبدیل ورودی‌ها به عدد از try-except استفاده شده تا در صورت وارد کردن مقادیر نامعتبر، به کاربذخیره داده‌های کاربر:ره داده‌های کاربر:** از context.user_data برای ذخیره موقت اطلاعات مربوط به هر کاربر استفاده می‌کنیم. - پایان مکالمه : با ConversationHandler.END مکالمه را خاتمه می‌دهیم تا ربات آماده دریافت دستورات جدید باشد. --- # **کد برای نسخه‌های جدیدتر python-telegram-bot (نسخه 20 به بعد):** اگر از نسخه‌های جدیدتر استفاده می‌کنید، نحو کد کمی تغییر می‌کند. نصب نسخه جدید: pip install python-telegram-bot --upgrade کد: `python from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes, MessageHandler, filters, ConversationHandler FIRST_NUMBER, SECOND_NUMBER = range(2)
  2. 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 اطلاعات موقت کاربر را بین مراحل ذخیره کنید. - حتماً ورودی‌های کاربر را اعتبارسنجی کنید تا از بروز خطا جلوگیری شود. - در صورت نیاز، می‌توانید عملیات‌های ریاضی دیگری را نیز اضافه کنید.

Відкрита публічна стрічка з пошукового індексу ChatCrawler — «Google по публічному Telegram»; оновлюється в міру обходу майданчика. Час — UTC.

Лише публічний контент, офіційний API Telegram. Про проєкт · Питання · Межі індексу · Прибрати сторінку з видачі · Каталог · Пошук · Як ми рахуємо