Telegram-бот: конвертер валют на Python

Для создания 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, а обработка ошибок обеспечивает стабильность.

Что будем искать? Например,программа