Giter VIP home page Giter VIP logo

saloon_bot's Introduction

saloon_bot 💅

saloon_bot - Telegram bot для записи в салон красоты с использованием Google Sheets

Static Badge Static Badge Static Badge Static Badge

IMG-1551-1


Описание

Данный проект представляет собой телеграмм бота, который позволяет пользователям записываться в салон красоты. Бот использует Google Sheets для хранения информации о клиентах и их записях.

Пример таблицы: https://docs.google.com/spreadsheets/d/1VmucIj0jhJcIDv3tkfpXtlLoDRh4Zhoa8DuCTzOuhuQ/edit?usp=sharing

telebot documentation: https://github.com/eternnoir/pyTelegramBotAPI

gspread documentation: https://docs.gspread.org/en/v5.7.2/

Установка

git clone https://github.com/frolovelo/saloon_bot.git

Зависимости

Windows

pip install -r requirements.txt

macOS/Linux:

pip3 install -r requirements.txt

Активация виртуального окружения (Windows):

\venv\Scripts\activate

Активация виртуального окружения (macOS/Linux):

source venv/bin/activate

Использование

  1. Создайте config.py с содержимым:
TOKEN = "YOUR_BOT_TOKEN"
  1. Получите json key от Google Sheets (как получить: https://www.youtube.com/watch?v=82DGz7IxW7c)

Структура ключа:

{
  "type": "service_account",
  "project_id": "beautysaloon",
  "private_key_id": "fGEFEfeEWR343253235",
  "private_key": "-----BEGIN PRIVATE KEY-----\n",
  "client_email": "[email protected]",
  "client_id": "10275785785778592",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my-account-service",
  "universe_domain": "googleapis.com"
}
  1. Замените название ключа в google_sheet.py
# Название файла json ключа
creds = Credentials.from_service_account_file('YOUR_NAME_KEY.json', scopes=myscope)
client_main = gspread.Client(creds)
  1. Для тестового запуска рекомендуется скопировать данные из примера таблицы: https://docs.google.com/spreadsheets/d/1VmucIj0jhJcIDv3tkfpXtlLoDRh4Zhoa8DuCTzOuhuQ/edit?usp=sharing

  2. Смените данные на свои в google_sheet.py

# Название таблицы
sh = client_main.open('YOUR_TABLE_NAME')
# Страницы таблицы, которые должны игнорироваться во избежание проблем
IGNOR_WORKSHEETS = ['Работники']
# Страница таблицы, на которой перечислены все действующие работники и услуги
NAME_SHEET_WORKERS = 'Работники'
# Названия основных колонок(очередность важна!)
NAME_COL_SERVICE = 'Услуга'
NAME_COL_MASTER = 'Мастер'
  • sh = client_main.open('YOUR_TABLE_NAME') - имя вашей таблицы
  • IGNOR_WORKSHEETS - имена листов, структура которых отличается от листов для записи
  • NAME_SHEET_WORKERS - имя листа со всеми услугами и работниками
  • NAME_COL_SERVICE и NAME_COL_MASTER - названия колонок в вашей таблице

Примечание:

  1. Лист NAME_SHEET_WORKERS требуется для выдачи клиентам списка мастеров и услуг;

image

  1. Листы для записи должны иметь определенный формат имени: 'дд.мм.гг';

image

  1. В листах для записи следует соблюдать лишь первые две колонки: 'Услуга', 'Мастер', время для записи вы можете ставить на своё усмотрение.

123123123

Структура проекта

Вклад и разработка

Если вы обнаружили ошибки или у вас есть предложения по улучшению проекта, пожалуйста, создайте Issue или Pull Request в репозитории проекта.

TO-DO

  • Безопасность потоков
  • Дополнительные запросы к Google Sheets при возникновении ошибок google_sheet.py
  • Оптимальное использование памяти, отчистка по таймауту clear-dict.py
  • Кэширование данных из Google Sheets для экономии кол-ва запросов к api
  • SQLAlchemy/MongoDB для хранения номеров телефона пользователя
  • Удаление дат, которые были свободны, но в процессе бронирования заполнились
  • Асинхронный Telebot + Анимация загрузки
  • Функционал напоминаний о записи
  • Создание вспомогательного бота админа для удаленной настройки бота
  • Отправка уведомлений о новых записях администратору салона на доп. аккаунт telegram

Референсы

purgy - Telebot календарь

saloon_bot's People

Contributors

frolovelo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.