saloon_bot_workers_cf - Telegram bot для записи в салон красоты с использованием Google Sheets
Данный проект представляет собой телеграмм бота, который позволяет пользователям записываться в салон красоты. Бот использует 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
- Создайте config.py с содержимым:
TOKEN = "YOUR_BOT_TOKEN"
- Получите 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"
}
- Замените название ключа в google_sheet.py
# Название файла json ключа
creds = Credentials.from_service_account_file('YOUR_NAME_KEY.json', scopes=myscope)
client_main = gspread.Client(creds)
-
Для тестового запуска рекомендуется скопировать данные из примера таблицы: https://docs.google.com/spreadsheets/d/1VmucIj0jhJcIDv3tkfpXtlLoDRh4Zhoa8DuCTzOuhuQ/edit?usp=sharing
-
Смените данные на свои в 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
- названия колонок в вашей таблице
- Лист
NAME_SHEET_WORKERS
требуется для выдачи клиентам списка мастеров и услуг;
- Листы для записи должны иметь определенный формат имени: 'дд.мм.гг';
- В листах для записи следует соблюдать лишь первые две колонки: 'Услуга', 'Мастер', время для записи вы можете ставить на своё усмотрение.
- config.py - токен бота
- main.py - telegram бот
- google_sheet.py - работа с Google Sheet
- clear_dict.py - хранение информации о пользователях и периодичная отчистка
- keyboards.py - клавиатуры и кнопки Telebot
- telebot_calendar.py - клавиатура в виде календаря
- requirements.txt - библиотеки
Если вы обнаружили ошибки или у вас есть предложения по улучшению проекта, пожалуйста, создайте Issue или Pull Request в репозитории проекта.
- Безопасность потоков
- Дополнительные запросы к Google Sheets при возникновении ошибок
google_sheet.py
- Оптимальное использование памяти, отчистка по таймауту
clear-dict.py
- Кэширование данных из Google Sheets для экономии кол-ва запросов к api
- SQLAlchemy/MongoDB для хранения номеров телефона пользователя
- Удаление дат, которые были свободны, но в процессе бронирования заполнились
- Асинхронный Telebot + Анимация загрузки
- Функционал напоминаний о записи
- Создание вспомогательного бота админа для удаленной настройки бота
- Отправка уведомлений о новых записях администратору салона на доп. аккаунт telegram
purgy - Telebot календарь