Для создания Telegram-бота на Python, выполняющего конвертацию валют, используется библиотека currency_converter.
Установка и подключение библиотеки
Установите библиотеку currency_converter через терминал:
pip install currency_converter
Подключите библиотеку в Python-коде:
from currency_converter import CurrencyConverter
c = CurrencyConverter()
Объект c класса CurrencyConverter используется для конвертации валют.
Обработка команды /start и ввод суммы
Функция start обрабатывает команду /start, выводит приветственное сообщение и запрашивает сумму для конвертации:
def start(update, context):
update.message.reply_text("Привет! Введите сумму для конвертации.")
context.user_data['amount'] = 0
context.user_data['step'] = 'amount'
return amount(update, context)
Функция amount обрабатывает ввод суммы, проверяет корректность данных и обрабатывает ошибки:
def amount(update, context):
try:
amount = float(update.message.text.strip())
if amount > 0:
context.user_data['amount'] = amount
context.user_data['step'] = 'currency_pair'
markup = create_markup()
update.message.reply_text("Выберите пару валют:", reply_markup=markup)
else:
update.message.reply_text("Неверный формат. Введите сумму больше 0.")
return amount(update, context)
except ValueError:
update.message.reply_text("Неверный формат. Введите число.")
return amount(update, context)
def create_markup():
markup = types.InlineKeyboardMarkup(row_width=2)
button1 = types.InlineKeyboardButton("USD/EUR", callback_data="USD/EUR")
button2 = types.InlineKeyboardButton("EUR/USD", callback_data="EUR/USD")
button3 = types.InlineKeyboardButton("USD/GBP", callback_data="USD/GBP")
button4 = types.InlineKeyboardButton("Другое", callback_data="other")
markup.add(button1, button2)
markup.add(button3, button4)
return markup
create_markup() создает клавиатуру с вариантами пар валют.
Обработка выбора валютной пары и конвертация
Функция callback обрабатывает нажатие кнопок с валютными парами:
def callback(update, context):
query = update.callback_query
query.answer()
if query.data != "other":
pair = query.data.upper()
result = convert(context.user_data['amount'], pair)
query.edit_message_text(f"Получается: {result:.2f}\nМожете ввести новую сумму.")
return amount(update, context)
else:
query.edit_message_text("Введите пару валют через / (например, USD/EUR):")
return custom_pair(update, context)
Функция convert выполняет конвертацию:
def convert(amount, pair):
from_currency, to_currency = pair.split('/')
return c.convert(amount, from_currency, to_currency)
Обработка пользовательского ввода пары валют
Функция custom_pair обрабатывает ввод пользователем произвольной пары валют:
def custom_pair(update, context):
try:
pair = update.message.text.strip().upper()
from_currency, to_currency = pair.split('/')
result = convert(context.user_data['amount'], pair)
update.message.reply_text(f"Получается: {result:.2f}\nМожете ввести новую сумму.")
return amount(update, context)
except (ValueError, Exception):
update.message.reply_text("Неверный формат. Введите пару валют через / (например, USD/EUR).")
return custom_pair(update, context)
Созданный Telegram-бот выполняет конвертацию валют, обрабатывает различные сценарии ввода данных и выдает понятный результат. Бот демонстрирует работу с Telegram Bot API и библиотекой currency_converter, а обработка ошибок обеспечивает стабильность.