git
Python 3
virtualenv
Установить недостающие компоненты можно с помощью системного пакетного менеджера (
apt-get
,yum
,pacman
и т.д.)
git clone https://github.com/Egor-S/gekkon-order-bot.git
cd gekkon-order-bot
Большая часть настроек располагается в файле config.json
, который необходимо расположить в скаченную папку.
Зайдите на сайт Google API Console и выберите Создать проект
.
После создания перейдите в раздел Учетные данные
и нажмите на Создать учетные данные
--> Ключ сервисного аккаунта
. Создайте новый сервисный аккаунт с ключом типа JSON
.
В завершение процедуры создания учетных данных будет скачан файл, который необходимо переименовать в google_service.json
и поместить в скаченную ранее папку.
Написать @BotFather
, следовать указаниям. В ответ будет получено сообщение с токеном - поместите его в поле telegram-token
в файле config.json
.
Разрешите чтение/запись для e-mail из файла google_service.json
в нужных таблицах (Google может прислать письмо, что такого ящика не существует - не обращайте внимание).
Структура каталога: на листе Номенклатура
три колонки начиная со второй строки
Заголовок категории:
- Название новой категории [Столбец A]
Позиция в каталоге:
- Пустота [Столбец A]
- Артикул (произвольное число) [Столбец B]
- Описание [Столбец C]
Название позиции берется из описания, между кавычек. При отсутствии кавычек - берется описание полностью.
В таблице с заказами нужно создать лист Orders
, а в первой строке разместить заголовки (id, артикул, название, количество, имя сотрудника, дата). В первой колонке, начиная со второй строки, указываются id заказов.
В файле config.json
запишите:
- id таблицы с листом
Номенклатура
в полеtable
в полеcatalog
- id таблицы с листом
orders
в полеtable
в полеorders
Оба листа можно разместить в одной таблице, тогда в оба поля нужно записать один и тот же id
Для использования socks5 прокси необходимо в файле config.json
:
- Создать объект в поле
proxy
- Записать в поле
url
в полеproxy
адрес и порт прокси-сервера в форматеsocks5://ip_adress:port
- Записать в поля
user
иpassword
в полеproxy
имя пользователя и пароль соответственно (при отсутствии указать пустую строку""
)
Сообщение, которое печатается по команде /start
, можно настроить в файле config.json
в поле welcome-message
.
{
"telegram-token": "<telegram token>",
"catalog": {
"table": "<catalog table id>",
"sheet": "Номенклатура",
"range": "A2:C"
},
"orders": {
"table": "<orders table id>",
"sheet": "Orders",
"range": "A:F",
"id-range": "A2:A"
},
"notification-chat": <notification chat id>,
"proxy": {
"url": "<socks5 proxy url>",
"user": "<username>",
"password": "<password>"
},
"welcome-message": "Для начала оформления заявки отправьте /order\nДля отмены отправьте /abort"
}
Создаем виртуальное окружение:
virtualenv venv -p python3
Устанавливаем зависимости:
venv/bin/pip install -r requirements.txt
Запускаем бота:
venv/bin/python run.py
Если все действия выполнены правильно, то будет выведено сообщение формата "Logged in as @YourBotName".
Для остановки бота нажмите Ctrl+C
.
Добавьте бота в нужный канал и вызовите команду /chatid
(он должен быть запущен). Полученное значение (для групп со знаком минус) запишите в поле notification-chat
в файле config.json
.
Для вступления изменений в силу - перезапустите бота.
Настройте удобным для вас способом (cron
, rc.local
и т.д.) запуск бота при старте системы.
Важно! Запускать бота необходимо из директории проекта:
cd /path/to/gekkon-order-bot
venv/bin/python run.py &
Обновление каталога происходит автоматически, если данные старше 30 минут. Чтобы немедленно обновить каталог используйте команду /forceupdate
.