Телеграм-бот для организации предзаказов в сети кофеен

Бесплатный доступ

В статье приводится описание работы телеграм-бота для оформления заказов в сети кофеен различных позиций меню с помощью мессенджера Telegram. Бот включает в себя выбор филиала, время посещения, ознакомление с меню и формирование предзаказа. Телеграм-бот значительно упрощает процесс оформления заказов в кофейне, позволяя пользователям совершать заказы и получать информацию о статусе заказа прямо через мессенджер Telegram. Это удобно для клиентов и помогает кофейне эффективно обрабатывать заказы.

Мессенджер, телеграм-бот, бот, кофе, кофейня, заказ, предзаказ

Короткий адрес: https://sciup.org/170199603

IDR: 170199603   |   DOI: 10.24412/2500-1000-2023-6-3-139-146

Текст научной статьи Телеграм-бот для организации предзаказов в сети кофеен

Самый важный ресурс сейчас – это время. Каждая минута обычного человеческого дня имеет свой вес и кажется, что всякий раз, когда хочется перекусить, слишком много времени теряется в очереди, особенно в популярных заведениях или в часы пик. И чтобы не тратить такой драгоценный ресурс можно и стоит использовать свое время рационально, пользуясь современными нововведениями в сфере общепита.

У большинства людей сейчас имеется современный смартфон, и почти у каждого есть различные мессенджеры, такие как: WhatsApp, VK, Viber, в том числе Telegram [1]. Например, мессенджер Telegram имеет большой спектр возможностей: общение с другими пользователями, развлекательный контент, рабочее пространство, с помощью которого можно организовать работу бота-предзаказов.

Преимущества использования телеграм-бота для предварительного заказа еды очевидны. Во-первых, можно оформить заказ в любое удобное время и из любого места, где есть подключение к Интернету. Теперь больше не нужно тратить время на поездку или ожидание в очереди, просто следует выбрать блюда, указать предпочтения и отправить заказ через бота.

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

Кроме того, телеграм-боты могут предлагать дополнительные функции, такие как уведомления о специальных предложениях или рекламных акциях, меню и часах работы заведения. Это поможет конечному потребителю быть в курсе последних обновлений и выбрать оптимальное время для посещения заведения.

Таким образом, использование телеграм-ботов для предварительного заказа еды – эффективный способ управлять своим временем и экономить его ресурсы [2].

Для того, чтобы оформить предзаказ, понадобится всего пара минут и смартфон, который всегда находится под рукой у пользователя, вместо более длительного ожидания очереди и приготовления своего заказа [3].

В процессе реализации телеграм-бота были поставлены и решены такие задачи, как проведение анализа предметной области и существующих аналогов, осуществление выбор средств разработки для сервиса, выполнение моделирование и программной реализации разрабатываемого телеграм-бота.

Для понимания работы телеграм-бота следует ознакомиться с диаграммой прецедентов, представленной на рисунке 1.

Рис. 1. Диаграмма прецедентов

В системе предусмотрено три роли пользователя:

  • -    Незарегистрированный пользователь может пройти только процедуру регистрации, после чего он становится зарегистрированным пользователем, а его данные заносятся в соответствующую таблицу пользователь базы данных;

  • -    Зарегистрированный пользователь имеет функцию оформить заказ, которая включает в себя выбор филиала, просмотр меню, выбор позиций и выбор времени посещения. Полученные данные записываются в таблицу заказов базы данных. Также пользователь может удалить свою учетную запись;

  • -    Сотрудник уже работает над статусом предзаказа, который отправил пользователь. Он может принять предзаказ, подтвердить его приготовление и отклонить заказ.

Стоит ознакомиться подробнее с базой данных, которая представлена на рисунке 2. Данная БД содержит в себе две таблицы : заказы и пользователи .

Таблица пользователей содержит в себе информацию и о зарегистрированных пользователях, такие как: ID пользователя, его имя, номер телефона и имя пользователя в мессенджере Telegram. ID пользователя является его уникальным идентификатором. Имя пользователя используется для удобства обращения к гостю. Номер телефона и имя пользователя в Telegram нужны для связи с гостем для того, чтобы уточнить некоторые моменты, которые не были указаны в предзаказе.

Таблица заказов содержит больше информации. ID заказа является ID пользователя. Так как предусмотрено, что данный бот может использоваться в сети кофеен, то в БД также записывается филиал, который гость выбрал при оформлении заказа. Данные предзаказа, которые пользователь отправляет через бота, также хранятся в соответствующей записи, как и выбор времени посещения кофейни. В БД предусмотрена запись о статусе заказа и времени его совершения, для обратного отсчета выполнения заказа.

1

users

orders

id

INTEGER >---

-I- id

INTEGER

name

VARCHAR

filial

VARCHAR

phone_number

VARCHAR

order, text

VARCHAR

telegramID

VARCHAR

order, time

VARCHAR

order.status

INTEGER

sending_time

TIMESTAMP

Рис. 2. База данных

Процесс создания, заполнения и поиска данных полностью осуществлен с помощью кода, который представлен на рисунках 3-4.

data = cursor.execute("select count(*) from sqlitemaster where type='table‘ and name=*users'") for row in data:

if row[0] == 0:

user = cursor.fetchone() if not user:

return False def drop_user_reg(user_id):

cursor.execute("DELETE FROM users WHERE id?",(user_id,))

def add_user_name(message):

def add_user_telegramID(message):

def add_user_numb(message):

def get_user_name(user_id):

cursor.execute("SELECT name FROM users WHERE id?",(userid,))

username - cursor.fetchone()[0]

return user_name def get_user_numb(user_id):

cursor.execute("SELECT phone_number FROM users WHERE id-?",(userid,))

usernumb - cursor.fetchone()[0]

return user_numb def get_user_tgID(user_id):

cursor.execute("SELECT telegramID FROM users WHERE id=?”,(user_id,))

user_tgID = cursor.fetchone()[0]

return user_tgID

Рис. 3. Таблица пользователей в БД data - cursor.execute("select count(*) from sqlite_master where type='table‘ and name=’orders'") for row in data: if row[e] 0:

order = cursor.fetchone() if not order:

return False def choise_filial(message,fiLiaL):

def add order (message, order):

def sending_time(message, sending time):

def get_filial(user_id):

cursor.execute("SELECT filial FROM orders WHERE id=?",(user_id,))

order_filial = cursor.fetchone()[D]

i return order_filial def get_order_text(user_td):

cursor.execute("SELECT order text FROM orders WHERE id-?",(user_id,))

ordertext = cursor.fetchone()[0]

: return order text def get_time(user_id):

cursor.execute("SELECT order_time FROM orders WHERE id=?",(user_id,))

ordertime = cursor.fetchone()[0] \ return order_time

Рис. 4. Таблица заказов в БД

При регистрации пользователя создается запись в таблице, если она еще не существуют, либо «привязывается» к уже существующей. ID пользователя является уникальным значением и не меняется даже при повторной регистрации, именно поэтому все заказы хранят это значение для истории обращений в БД.

Процедура регистрации достаточно проста. Пользователь прописывает коман- ду /start, после чего бот требует ввести некоторые данные. Если же у пользователя уже есть учетная запись, то бот выводит его данные для проверки, а после предлагает оформить предзаказ, использую команду /order, либо же удалить свою учетную запись с помощью команды /restart. Данный функционал бота представлен на рисунке 5.

Для оформления заказа необходимо прописать команду /order и выбрать необходимый филиал, который предложит бот. Сразу после появится навигационное меню, в котором представлено меню выбранного филиала, кнопка возврата и кнопка оформления заказа. Так как в боте предусмотрено, что позиции в меню каждого из филиалов могут отличаться, соответственно, за каждым филиалом закреплено свое индивидуально меню, что продемонстрировано на рисунке 6.

MENU

MENU

1 Оформить заказ

■ Оформить заказ

Вы выбрали филиал 1

■ Оформить:

Вы можете ознакомиться с меню, нажав на кнопку в Показать меню,

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

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

| Дли о*ори*№е<з заказа выберите один из Фиг Вы можете ознакомиться с меню, нажав на кнопку ^Показать меню,

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

Рис. 6. Оформление заказа, навигационное меню

Следующим шагом является этап оформления заказа. После того, как пользователь ознакомился с меню и выбрал необходимые нужные позиции, происходит информирование бота о конечном выборе пользователя. При нажатии на кнопку «Оформить заказ», бот отправляет сообщение с правилами оформления заказа, а именно, что одна позиция вводится одним текстовым сообщением, для начала ввода позиций следует нажать на кнопку «Добавить позицию», а лишь после отправлять сообщение. Для добавления еще одной позиции нужно нажать соответствующую кнопку. После ввода всех позиций, осуществляется переход к следующему этапу при нажатии кнопки «Продолжить». Стоит отметить, что в боте предусмотрены ограничения: при нажатии на кнопку «Продолжить» без ввода хотя бы одной позиции, бот сообщит об этом и вернет пользователя обратно к навигационному меню, которое упоминалось ранее. Также, если пользователем вводится более чем 20 позиций, то бот выведет соответствующее сообщение – Превышен лимит позиций. Работа бота и демонстрация функций представлены на рисунках 7-8.

гво позиций в одном предзаказе

После отправки предзаказа нажмите

Продолжите введите сообщение для добавления в

Вы нажали кнопку "Продолжить1

Продолжить

Круассан

Капучино

Выберите время посещения кофейни:

М И

ОДНИМ сообщением, если в заказе несколько позиций, отправьте их добавить еще одну позицию, нажмите кнопку ‘Добавить позицию'. Если хотите добавить еще одну позицию, нажмите кнопку ‘Добавить позицию'. Если хотите

Если хотите выбрать другой Филила. нажмите кнопку Вернуться назад. Если вы готовы сделать заказ, то нажмите кнопку 8 Оформить заказ.

Рис. 7. Оформление заказа, формирование позиций

if ler(messages) >= 2O:

messages.арpend(message_text)

async def history(message: types.Message, state: FSMContext):

await bot.send_message(chat_id, "\n".join(messages))

add_order(message, json_data)

await timeorder(message)

await bot.send_message(chat_id, 'Вы не записали ни одной позиции")

await MV(message)

Рис. 8. Функции ограничений количества позиций

В завершающей части оформления предзаказа бот предложит выбрать время посещения кофейни после заполнения всех позиций пользователем. Это будет последний этап для формирования предзаказа. После бот выведет сообщения со всеми введенными данными, такими как филиал, выбранные позиции и время, через которое пользователь прибудет в кофейню. Если же что-то окажется неверным или пользователь передумал, либо решил выбрать что-то другое, то возможно вернуться к оформлению заказа, нажав на соответствующую кнопку, которая перенаправит к навигационному меню. Если же все указано корректно, то пользователь подтверждает свой заказ и ожидает его приготовление, о котором его должен оповестить бот. В боте предусмотрено 5 состояний заказа:

0 – это черновик, когда пользователь только формирует свой предзаказ;

  • 1    – пользователь отправил свой предза-каз;

  • 2    – предзаказ принят в работу;

  • 3    – предзаказ готов;

  • -1 – предзаказ приготовить не удалось.

После пользователю придет сообщение о том, что его заказ готов и его можно забрать, но возможно и такое, что по некоторым причинам заказ приготовить не удастся и гость останется без своего заказа. Последний этап оформления заказа и состояния заказа продемонстрированы на рисунке 9.

CoffeeTime

Загрузка.

Буду через 5 минут вернуться назад

Вы выбрали "Буду через 5 минут*

Ваш заказ примят в работу*

Ваш заказ готов!

Все верно, от прав и

Вернуться назад

Капучино

| Продолжить Ваш заказ:

Ваш заказ отправили бариста, скоро его примут в работу

I Даша Пушкарева | Продолжить

Выберите время посещения кофейни:

I Выберите врем* посещение кофейни

Вы выбрали Филиал 3

Ваш заказ Капучино

Вы будете через 5 минут.

Все верно?

Буду через 10 минут Буду через 20 минут

К сожалению, заказ приготовить не удалось.

I Даш» П ушеареша | Продолжить

Вы нажали кнопку 'Продолжить'

CoffeeTime

Рис. 9. Оформление заказа, состояния заказа

Создание телеграм-бота для оформления предзаказов в сети кофеен осуществлялось с использованием языка Python, фреймворка aiogram и БД SQLite представляет интересный пример применения технологий для упрощения процесса заказа и повышения удобства обслуживания клиентов.

Основным инструментом, используемым для создания бота, является язык программирования Python. Python является одним из самых популярных языков для разработки ботов и приложений благодаря своей простоте, гибкости и широкому выбору библиотек [4].

Фреймворк aiogram, выбранный для разработки бота, предоставляет удобные инструменты для работы с Telegram API и обеспечивает простоту создания и поддержки функционала бота [5]. Благодаря этому фреймворку возможно легко настроить обработку команд и сообщений от пользователей, а также реализовать механизм предзаказа.

Использование базы данных SQLite для хранения данных представляется разумным выбором для решения этой задачи. SQLite – это легкое и простое в использовании реляционное хранилище данных, для работы которого не требуется отдельный сервер. Таким образом, SQLite позволяет сохранять информацию о предзаказах без необходимости установки и настройки дополнительных компонентов.

В результате разработки этого Telegram-бота клиенты сети кофеен теперь могут легко размещать предзаказы через мессенджер Telegram, что значительно упрощает процесс оформления заказа и экономит время пользователей. Благодаря использованию Python, фреймворка aiogram и базы данных SQLite разработка бота была относительно простой и эффективной.

Список литературы Телеграм-бот для организации предзаказов в сети кофеен

  • Популярные мессенджеры: список российских и мировых сервисов. Обзор 2021. - [Электронный ресурс]. - Режим доступа: https://vc.ru/u/234439-crm-group/298130-populyarnye-messendzhery-spisok-rossiyskih-i-mirovyh-servisov-obzor-2021.
  • Боты для заказа и доставки еды. - [Электронный ресурс]. - Режим доступа: https://www.botobot.ru/blog/ru/boty-dlia-zakaza-i-dostavki-edy/.
  • Статистика Telegram в 2022 году | 100+ фактов. - [Электронный ресурс]. - Режим доступа: https://inclient.ru/telegram-stats/.
  • Как Python стал самым популярным языком программирования. - [Электронный ресурс]. - Режим доступа: https://tproger.ru/articles/pochemu-python-takoj-populjarnyj/.
  • Знакомство с aiogram - Пишем Telegram-ботов с aiogram 3.x (β). - [Электронный ресурс]. - Режим доступа: https://mastergroosha.github.io/aiogram-3-guide/quickstart/.
  • SQLite - самая простая база данных, которая работает везде // Журнал "Код" программирование без снобизма. - [Электронный ресурс]. - Режим доступа: https://thecode.media/sqlite/.
Статья научная