Skip to content

Latest commit

 

History

History
54 lines (31 loc) · 7.46 KB

README.md

File metadata and controls

54 lines (31 loc) · 7.46 KB

deadline-bot

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

Основная группа бота

Установка

Шаг 1: установка зависимостей

Бот использует два внешних компонента: VKBottle — потрясающий, многофункциональный и, главное, асинхронный фреймворк для работы с ботами ВКонтакте — а также dateparser для распознавания введённых пользователем даты и времени. Если быть до конца честным, эти два компонента тянут за собой ещё кучу зависимостей, но их не надо устанавливать вручную. VKBottle также использует Loguru для вывода логов в консоль.

В терминале перейдите в директорию бота и выполните:

pip install -r requirements.txt

Для хранения дедлайнов бот использует БД SQLite, но в Python уже есть встроенный модуль для работы с ней, устанавливать дополнительно ничего не нужно.

Шаг 2: получение токена группы и настройка Long Poll API

Предполагается, что вы уже создали группу, в которой будет жить бот. Перейдите в её настройки, нажав на главной странице сообщества кнопку «Управление». Открываем раздел «Работа с API» и создаём новый ключ доступа (токен). Достаточно будет задать для ключа права доступа «Сообщения сообщества». В директории с ботом откройте файл config.py и вставьте полученный ключ в переменную token.

Здесь же откройте раздел «Long Poll API» и включите его (убедитесь, что в списке «Версия API» выбрана самая новая). Перейдите на вкладку «Типы событий» и отметьте все галочки в разделе «Сообщения» (на самом деле используется только событие «Входящее сообщение», но на всякий случай лучше отметить все — мешать не будет).

Перейдите в «Сообщения», включите сообщения сообщества, по желанию задайте приветственный текст.

Откройте «Настройки для бота», включите возможности бота и отметьте галочку напротив «Разрешить добавлять сообщество в беседы».

Поздравляем, бот готов к использованию!

Использование

Запустите bot.py. Если на предыдущем шаге вы всё сделали правильно, бот начнёт работать. При условии, что установлен Loguru, в консоли начнут появляться логи.

Команды бота

ВАЖНО:

  1. Чтобы бот мог упоминать всех участников в групповом чате, его необходимо сделать администратором беседы — это ограничения ВКонтакте и мы не можем их обойти.
  2. Чтобы бот увидел сообщение в групповом чате, команде либо должен предшествовать знак слеша (/), либо обращение по короткому имени «Дед» (с запятой, по правилам русского языка). В последнем случае боту должно быть выдано разрешение на чтение всей переписки.
  • добавь <название> на <время> (добавить <название> на <время>, дед, добавь <название> на <время>) — добавляет дедлайн. Дату и время можно вводить почти в любом формате, включая относительные величины, такие как «завтра», «в среду» и т. д. Ессли бот всё-таки не распознал введённое время, попробуйте другой формат.
  • удали <название> (удалить <название>, дед, удали <название>) — удаляет дедлайн. Если задано несколько дедлайнов с одинаковым названием (не надо так делать), будет удалён тот, который был установлен раньше.
  • измени <название> на <время> (изменить <название> на <время>, дед, измени <название> на <время>) — изменяет время уже существующего дедлайна.
  • сбрось (сбросить, дед, сбрось) — удаляет все дедлайны для данного чата.
  • дедлайны (дед, что по дедлайнам?, дед, скажи дедлайны, дед, расскажи про дедлайны) — выводит список всех текущих дедлайнов.
  • когда <название>? (`дед, когда <название>?) — сообщает время конкретного дедлайна.

Уведомления о дедлайнах

Бот пришлёт уведомление о скором дедлайне: одно — за сутки до дедлайна, другое — за час. Если дедлайн установлен в групповом чате, бот упомянет всех его участников (при условии, что он администратор беседы). Когда дедлайн настаёт, бот также присылает сообщение (но уже без упоминания — навряд ли кого-то спасёт тег, если этот человек просрочил дедлайн). При этом дедлайн автоматически удаляется, вручную этого делать нет необходимости.

Обратная связь и помощь в развитии

Категорически приветствуются issues и pull requests. Также пожелание или замечание можно написать любому из нас (см. блок контактов в основной группе бота).