{"id":14277,"url":"\/distributions\/14277\/click?bit=1&hash=17ce698c744183890278e5e72fb5473eaa8dd0a28fac1d357bd91d8537b18c22","title":"\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0442\u0440\u044b \u0431\u0435\u043d\u0437\u0438\u043d\u0430 \u0438\u043b\u0438 \u0437\u043e\u043b\u043e\u0442\u044b\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u044f","buttonText":"\u041a\u0430\u043a?","imageUuid":"771ad34a-9f50-5b0b-bc84-204d36a20025"}

Урок No8. Создание бота для конвертации валют

В этом уроке мы начнем создавать telegram бота, который будет конвертировать валюты.

Установка библиотеки.

Для конвертации валют мы будем использовать такую библиотеку, как currency converter. Для этого нам нужно ее установить в python.

После установки мы модем подключить нашу библиотеку к программе(from currency_converter import CurrencyConverter). И далее нам необходимо создать объект, класса CurrencyConverter().

Для конвертации мы будем использовать такой метод, как convert. В него мы будем передавать сумму, а также пару валют, среди которых мы будем выполнять конвертацию.

Обработка команды /start.

В первую очередь в любом боте мы должна обрабатывать команду /start. Тут же мы напишем стандартную для нас функцию, где мы будем выводить сообщение о том, чтобы он ввел сумму для конвертации, а далее будет говорить среди каких валют пользователь хочет совершить конвертацию. Для этого мы зарегистрируем некое следующее действие, где указываем параметр message, а также укажем нашу следующую функцию, например, summ. И по сути эта функция будет срабатывать как только пользователь введет некую сумму. В нашей функции давайте получать от пользователя данные и будем помещать их в переменную, например, money. Для этого пропишем message.text.strip(). И еще так как эта переменная будет использоваться в других функциях, то давайте делаем ее глобальной. Для этого в начале программы напишем, что money = 0, а внутри нашей функции будет обращаться к глобальной переменной money.

Кнопки для конвертации.

Теперь давайте установим набор различных кнопок, при нажатии на которые пользователь сможет выбрать пару для конвертации. Также для удобства импортируем из библиотеки telebot такую вещь, как types. Прописываем создаем markup, где обращаемся к types, потом к InlineKeyboardMarkup(). Также можно делать встроенные кнопки в сам telegram, но я решил, что данные кнопки будут удобнее. Также я хочу указать что в одном ряду будет максимум 2 кнопки. Для этого в InlineKeyboardMarkup() мы указываем row_width=2 (это означает, что в одном ряду будет не более двух кнопок). Теперь создаем сами по себе кнопки. Для этого используем InlineKeyboardButton. И тут мы указываем текст пары купюр для конвертации, а также указываем callback_data, по которой потом мы будем переводить купюры. В точно таком же формате создаем и другие кнопки. А также создадим кнопку 'Другое значение', при нажатии на которую пользователь будет сам указывать какие купюры он хочет перевести. И в конце мы указываем markup.add, где указываем все значения наших кнопок. И еще будем писать текст пользователю 'Выберите пару валют:', а также в конце прописываем reply_markup=markup.

Теперь давайте на данном этапе запустим бота и посмотрим как он будет работать.

Но на данном этапе, если мы введем, например, не число, а текст, то у нас также будет выдаваться конвертация, чего быть не должно. Давайте это исправим.

Исправление ошибок.

Сначала нам необходимо указать то, что данные, которые мы будем получать от пользователя они должны быть числом. Для этого в переменной money напишем то, что она будет у нас int переменной. Если же сейчас мы запустим бота и будем вводить некую строку, то наш бот будет выдавать ошибку, так как мы пытаемся перевести некую строку в число. Поэтому давайте пропишем обработчик исключения.(try: .......... except: ..........). Наше исключения будет заключаться в том, что мы с вами будем пробовать привести money в число. Если же мы с вами будем получать ошибку, как ValueError(это ошибка, когда пользователь вводит не тот тип данных), то мы пользователю будем отправлять сообщение 'Формат не верный. Впишите сумму:'. Кроме этого нам надо зарегистрировать следующее действие, которая будет эта же функция. Ну и в конце мы должны прописать return, чтобы последующий код не выполнялся.

Теперь давайте исправим ошибку с тем, что если пользователь введет отрицательное число, то нам также выдавало ошибку. Для этого мы просто укажем перед нашими кнопками, если число больше 0, то мы едем по кнопкам, иначе мы будем выводить то же самое, что выводили ранее для ошибки, только будем писать пользователю другой текст.

Теперь давайте запустим бота и посмотрим что получилось.

На этом мы пока остановимся и продолжим на следующем уроке.

Также после каждого урока вы можете заходить на моего telegram бота, чтобы посмотреть результат работы, после каждого урока: http://t.me/pythonte1egram_bot.

А также вы можете подписаться на telegram канала, где будут выкладываться все коды с моих уроков, а также сами уроки: https://t.me/pythotelegram.

0
Комментарии
-3 комментариев
Раскрывать всегда