menu

SkylightBot

Stack:

Используемые языки:

Python

Используемые API / фреймворки:

disnake, json, numpy, os, datetime, sqlite3, math

Про бота

SkylightBot - бот созданный для работы с клиентами и работниками SkylightServices. Умеет помогать с оформлением заказа через ЛС с заказчиком, оформлением отзывов, работать с промокодами, отвечать на заранее заготовленные вопросы через меню выбора вопроса и также имеет небольшой набор команд, которыми в основном может пользоваться только owner студии.

Главное сообщение

Главное сообщение бота

Главное сообщение бота отправляется автоматически, после запуска бота, в канал, где должно начинаться оформление заказа. ID этого канала нужно указывать в файле bot_data.json в параметре order_channel_id.

Через данное сообщение начинается оформление заказа и заполнение отзыва. Также через это сообщение можно перенаправится в канал с пользовательским соглашением, канал с отзывами или канал с дополнительными примерами работ. Ещё поддержать проект обычным донатом и ввести подарочный промокод на услугу.

Промокоды

Уделю внимание теме с промокодами. Мой бот разделяет коды на три типа: промокод на услугу (service_code), премиумный промокод (premium_code) и обычный промокод (common_code).

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

Обычный промокод вводится в самом конце оформления заказа и не имеет каких-либо особенностей, кроме скидки, от того он и обычный.

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

Также у кодов есть параметры настройки, которые можно наложить на любой тип промокода, вот они сверху вниз:
discount_rate - процент скидки.
count_for_use - количество раз которое разные пользователи смогут ввести промокод.
date - Время, после которого промокод перестаёт действовать. (Формат ввода даты: день.месяц.год час:минута.)
users - список ID пользователей, которые могут активировать промокод.
Из всех этих параметров обязательно вводить только discount_rate.

Процесс оформления заказа

Покажу это несколькими скриншотами:

В последнем сообщении предлагается ввести промокод или оплатить услугу. Если у клиента есть промокод, который он хочет использовать, ему необходимо нажать на кнопку «Ввести промокод». После этого появится окно, в котором нужно будет указать промокод. Если промокод введён верно, клиент получит уведомление об успешной активации. В противном случае он получит сообщение о том, что промокод не был активирован, и причину этого. Затем клиенту нужно нажать на кнопку «Оплатить» и уже после этого его заказ будет отправлен сотрудникам в закрытый текстовый канал, а заказчик получит ссылку для оплаты.

Создание отзывов

Небольшое уточнение, что отзыв заполняется не в ЛС с заказчиком, а на самом Discord сервере в приватной ветке. После нажатия на кнопку отправки отзыва, отзыв отправиться в отдельный, публичный текстовый канал с отзывами и активируется таймер 20 секунд, по завершению которого ветка удалится.

bot_config.json

У бота имеется свой файл конфигурации, называется он bot_config.json. Вот все параметры настройки, которые поддерживает бот на данной версии:

bot_can_take_order (тип: bool, по умолчанию == true ) - параметр разрешающий создание новых заказов. Редактируется через команду /stop_take_order, доступная только owner.

Дополнительный функционал

- Разделение по ролям

Данный бот разделяет людей на четыре роли: клиент, работник (worker), менеджер (manager) и владелец (owner). В основном это разделение нужно для создания доступности к командам бота.

- Тех. поддержка

Вместе с главным сообщением, после запуска, SkylightBot отправляет и сообщение с технической поддержкой. В нём можно получить ответ на несколько заготовленных вопросов либо связаться с менеджерами студии. ID канала, в который должно публиковаться это сообщение, нужно также указать в файле bot_data.json в параметре support_channel_id.

- Базы данных

Бот имеет две базы данных. В одной он хранит информацию о клиентах, а во второй о работниках студии.

- Запись логов

SkylightBot позволяет пересылать сообщения, отправляемые пользователями сервера. Чтобы запретить определённые каналы для ведения логов, необходимо обратиться к файлу bot_data.json и найти там параметр banned_channels_id, содержащий список ID этих каналов (список также может состоять только из одного ID).