Advertisement
akupriyanovhse

обработка инлайн-кнопок

Mar 6th, 2025 (edited)
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.53 KB | None | 0 0
  1. from telegram import (
  2.     Update, ReplyKeyboardMarkup,
  3.     InlineKeyboardMarkup, InlineKeyboardButton)
  4. from telegram.ext import (
  5.     Application, CommandHandler, MessageHandler, ContextTypes, filters, CallbackQueryHandler)
  6. from my_settings import API
  7.  
  8. async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
  9.     """Отправляет сообщение с inline-кнопками для выбора валюты."""
  10.     keyboard = [
  11.           [InlineKeyboardButton("RUB", callback_data='RUB'), InlineKeyboardButton("USD", callback_data='USD')],
  12.           [InlineKeyboardButton("EUR", callback_data='EUR'), InlineKeyboardButton("BTC", callback_data='BTC')]
  13.       ]
  14.     reply_markup = InlineKeyboardMarkup(keyboard)
  15.     # Отправляем сообщение с нашей inline-клавиатурой
  16.     await context.bot.send_message(chat_id=update.effective_chat.id,
  17.                                      text='Пожалуйста, выберите валюту:',
  18.                                      reply_markup=reply_markup)
  19.  
  20.  
  21. async def handle_inline_buttons(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
  22.     """
  23.    Обработчик нажатия на inline-кнопки.
  24.    """
  25.     query = update.callback_query
  26.     await query.answer()  # Обязательно отвечаем на callback, чтобы Telegram не "подвисал".
  27.  
  28.     # Достаем из callback_data название валюты
  29.     chosen_currency = query.data
  30.  
  31.     # Можно отредактировать существующее сообщение или отправить новое:
  32.     # 1) Отправляем новое сообщение
  33.     await query.message.reply_text(f"Вы выбрали валюту: {chosen_currency}")
  34.  
  35.     # 2) Или отредактировать то же сообщение
  36.     # await query.edit_message_text(f"Вы выбрали валюту: {chosen_currency}")
  37.  
  38.  
  39. def main():
  40.     """Запускает бота."""
  41.     # Замените 'YOUR_TOKEN' на токен вашего бота
  42.     application = Application.builder().token(API).build()
  43.  
  44.     # Добавляем обработчик команды /start
  45.     application.add_handler(CommandHandler('start', start))
  46.  
  47.     # Обработчик колбэков (нажатий на inline-кнопки)
  48.     application.add_handler(CallbackQueryHandler(handle_inline_buttons))
  49.  
  50.     # Запускаем бота
  51.     application.run_polling()
  52.  
  53.  
  54. if __name__ == '__main__':
  55.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement