/scheduler

Primary LanguagePython

Описание проекта

Легкий бот для социальной сети Вконтакте, главной задачей которого является напоминание пользователей о событиях.

После ввода специальных команд программа будет напоминать личным сообщением о важном деле/событии/действии.

Используемые технологии

В качестве обертки используется фреймворк 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

vk.com

Введите ваш адрес и нажмите на кнопку подтвердить! Если вы ранее сделали всё верно, адрес успешно подтвердится.

Начните диалог с вашим сообществом. Используйте команды, указанные ниже

Примеры команд

!кд Таблетка 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. В сообщении за место пробелов нужно использовать '-'.

В случае ошибки бот подскажет, как исправить команду.

По-мимо команд, есть еще два действия:

  • Список всех расписаний:
  • Удалить расписания: @у НазваниеРасписания