Телеграм-бот для магазина: Пошаговое руководство с разбором кода. Артем Демиденко
Чтение книги онлайн.

Читать онлайн книгу Телеграм-бот для магазина: Пошаговое руководство с разбором кода - Артем Демиденко страница 12

СКАЧАТЬ Оно обеспечивает контроль над процессом выполнения, помогает выявлять ошибки и анализировать поведение программы. Для начала работы с логированием добавим в начало файла `main.py` следующий код:

      logging.basicConfig(format='%(asctime)s – %(name)s – %(levelname)s – %(message)s', level=logging.INFO)

      Теперь, когда возникнут ошибки или будут вызваны определенные события, эти данные будут записываться в консоль, что значительно легче отслеживать на ранних этапах создания бота.

      Реализация команд

      Следующим шагом станет реализация обработки команд. Начнём с создания функции `start`, которая будет вызываться при введении команды `/start`. Эта команда должна отправлять пользователю приветственное сообщение:

      def start(update: Update, context: CallbackContext) -> None:

      ....update.message.reply_text('Добро пожаловать в наш магазин! Чем могу помочь?')

      Теперь необходимо связать эту функцию с соответствующей командой. Для этого мы создадим экземпляр `Updater` и добавим обработчик команд:

      def main():

      ....updater = Updater("YOUR_TOKEN_HERE")

      ....updater.dispatcher.add_handler(CommandHandler("start", start))

      ....updater.start_polling()

      ....updater.idle()

      Не забудьте заменить `"YOUR_TOKEN_HERE"` на токен вашего бота, который вы получите у BotFather. После этого можно запустить наш проект, и при вводе команды `/start` пользователю будет отправлено приветственное сообщение.

      Создание списка товаров

      Чтобы ваш бот смог представлять пользователю список товаров, создадим простую модель товара. Для этого в директории `models` создадим файл `product.py` и в нём определим класс `Product`:

      class Product:

      ....def __init__(self, id: int, name: str, price: float):

      ........self.id = id

      ........self.name = name

      ........self.price = price

      Теперь добавим несколько примеров товаров в наш основной файл. В функции `start` мы к приветствию дополнительно прикрепим информацию о доступных товарах. Например:

      products = [

      ....Product(1, "Товар 1", 100.0),

      ....Product(2, "Товар 2", 200.0),

      ]

      def start(update: Update, context: CallbackContext) -> None:

      ....message = 'Добро пожаловать в наш магазин!\nНаши товары:\n'

      ....for product in products:

      ........message += f"{product.id}. {product.name} – {product.price} руб.\n"

      ....update.message.reply_text(message)

      Таким образом, при вводе команды `/start` пользователь будет видеть не только приветственное сообщение, но и список товаров.

      Оформление заказа

      Последней важной функцией первой версии нашего бота будет возможность оформления заказа. Для этого мы создадим новую команду `/order`, которая позволит пользователю выбрать товар по ID и подтвердить его покупку. Код для этой команды будет выглядеть следующим образом:

      def order(update: Update, context: CallbackContext) -> None:

      ....if len(context.args) == 0:

      ........update.message.reply_text("Пожалуйста, укажите ID товара для заказа.")

      ........return

      ....product_id = int(context.args[0])

      ....product = next((p for p in products if p.id == product_id), None)

      ....if product:

      ........update.message.reply_text(f"Вы успешно заказали {product.name}. Спасибо за покупку!")

СКАЧАТЬ