Skip to content

mlanies/tg-bog-nails_workers_cf

Repository files navigation

saloon_bot_workers_cf 💅

saloon_bot_workers_cf - 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 календарь

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published