Легкий бот для социальной сети Вконтакте, главной задачей которого является напоминание пользователей о событиях.
После ввода специальных команд программа будет напоминать личным сообщением о важном деле/событии/действии.
В качестве обертки используется фреймворк Django. Для планировщика задач была выбрана связка Celery + Redis
Вы можете воспользоваться уже готовым ботом, по адресу https://vk.com/public160895017
Если хотите установить его на свой сервер и в своё сообщество, воспользуйтесь инструкцией ниже.
Чтобы успешно запустить бота, потребуется немного усилий.
Клонируем репозиторий в корневую папку:
$ git clone https://github.com/Firexd2/scheduler.git
Убедитесь, что активировали нужное вам виртуальное окружение, и начинайте установку зависимостей:
$ pip install -r requirements.txt
Необходимо сконфигурировать данные для вашей базы данных. В проекте используется PostgreSQL:
# in settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'NameBase',
'USER': 'User',
'PASSWORD': 'Password',
'HOST': 'localhost',
'PORT': '',
}
}
Создаем и применяем миграции. В корневой папке проекта введите:
python manage.py makemigrations && python manage.py migrate
Описывать настройки Nginx и Wsgi не буду, так как здесь каждый для себя сам решает, какие технологии ему использовать. В Интернете много информации.
После развертывания необходимо запустить в фоновом режиме Celery
и Celery beat
.
Устанавливаем supervisor, и создаем конфигурационный файл cо следующим содержимым:
[program:scheduler-celery]
user=YOURuser
command = /home/YOURuser/YOUREnv/scheduler/bin/celery worker -A Celery --loglevel=debug --concurrency=4
directory = /home/YOURuser/scheduler
autorestart = true
autostart = true
stderr_logfile = /var/log/scheduler-worker.err.log
[program:scheduler-beat]
user=YOURuser
command = /home/YOURuser/YOUREnv/scheduler/bin/celery -A Celery beat
directory = /home/YOURuser/scheduler
autorestart = true
autostart = true
stderr_logfile = /var/log/scheduler-beat.err.log
Не забудьте указать правильный путь к вашему виртуальному окружению.
Обновляем supervisor и запускаем его, если он еще не запущен:
sudo supervisorctl update && sudo supervisorctl reread && sudo service supervisor start
Теперь необходимо создать сообщество на https://vk.com, чтобы получить токен и успешно взаимодействовать с пользователями. После создания сообщества, перейдите на управление сообществом, далее работа с API. Нажмите на вкладку Callback API
Введите ваш адрес и нажмите на кнопку подтвердить! Если вы ранее сделали всё верно, адрес успешно подтвердится.
Начните диалог с вашим сообществом. Используйте команды, указанные ниже
!кд Таблетка 10:30,19:00 Выпей-таблетку
Бот будет писать каждый день в 10:30 и 19:00 сообщение Выпей таблетку
Существует 5 команд разного функционала:
- на каждый день
!кд Тест 10:30,19:45 Напоминание
- на каждую неделю
!кн Напоминание пн,пт 12:00 Здесь-сообщение
- на каждый месяц
!км Название 1,5,7,8 20:30 Сообщение
- на каждый год
!кг ДеньРождение 06.01 09:00 Поздравить-Свету
- на определенный день
!д ВажныйДень 01.02.2018-10:50 Важный-день
Синтаксис всех команд достаточно прост, разберем подробно лишь одну. Допустим, нужно напоминание каждую неделю в 12:00 по понедельникам и пятницам. Тогда команда будет следующая:
!кн Напоминание пн,пт 12:00 Здесь-сообщение
!кн - тип команды. Напоминание - название твоего расписания. пн,пт - понедельник и пятница, дни недели напоминания. 12:00 - время напоминания. Здесь-сообщение - то сообщение, которое будет выслано в понедельник и пятницу в 12:00. В сообщении за место пробелов нужно использовать '-'.
В случае ошибки бот подскажет, как исправить команду.
По-мимо команд, есть еще два действия:
- Список всех расписаний:
@с
- Удалить расписания:
@у НазваниеРасписания