1.0.0 • Published 3 years ago

schoolbot v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

alt text

SchoolBot

Помощник для школьников и студентов для ВКонтакте, написанный на node.js

Просмотр функционала и не только

Я сделал специальную страницу, которая поясняет все команды бота, а также демонстрирует работу с ним. (Содержание устарело, но суть не меняется) Альтернатива - писать напрямую боту, которым я сам пользуюсь.

Установка

Чтобы установить бота, скопируйте репозиторий.

$ git clone https://github.com/sashafromlibertalia/SchoolBot.git

или воспользуйтесь npm:

npm install schoolbot

Важное объявление

Библиотека canvas не может из коробки обрабатывать JPEG изображения на ARM процессорах. Вы будете получать следующую ошибку:

Uncaught Error: node-canvas was built without JPEG support

Решение этой проблемы есть, но оно может сработать не для всех. Почему так? Я не знаю. Мне не помогло. Решение есть тут, а также тут.

Я очень надеюсь, что автор этой библиотеки придумает решение этой проблемы.

Дальнейшая настройка

Вам нужно создать группу в ВКонтакте, к которой будет привязан бот. Сначала разрешите сообщения сообщества, а затем вам нужно получить токен, который нужно вставить в конфиг. Найти его можно тут:

Управление -> Работа с API -> Ключи доступа -> Создать ключ Выбираете нужные вам пункты и жмете "создать".

После того, как Вы скачали репозиторий бота, переходить в папку src. В ней находится файл config.js. Он нужен для внесения параметров, необходимых для корректной работы бота.

const config = {
    TOKEN: STRING,  // Сюда вы пишите токен группы, полученный с помощью LongPoll
    POLLING_GROUP_ID: INT, // ID вашей группы
    PARSER_URL: STRING, // Ссылка на файл domashka.txt (КРАЙНЕ рекомендую хранить его на GitHub в репозитории с ботом, почему - см. parser.js)
    NAME_GROUP: STRING, // Ваш класс (или группа)
    NAME_PLACE: STRING, // Название вашего учебного заведения
    NAME_ADMIN: STRING, // Ваше имя
    NAME_ADMIN_DAT: STRING, // Ваше имя в дательном падеже (см. feedback.js)
    ADMIN_DOMAIN: STRING, // Короткая ссылка на вашу страницу
    ADMIN_ID: ARRAY OF INTS // Массив, состоящий из ID администраторов беседы (на тот случай, если бот будет состоять в нескольких беседах)
}

После того, как все данные будут заполнены, вам нужно разобраться со структурой кода. SchoolBot использует модульную систему: каждая функция вынесена в отдельный файл, который далее подключается к index.js. Подробнее о файлах ниже:

Название файлаРасположениеНазначение
index.js./src/index.jsИсполняемый файл программы, сюда подключаются все остальные файлы
vk.js./src/vk.jsВ данном файле хранится конструктор VK, а также обработчик сообщений и клавиатуры. Этот файл подключаем ко всем побочным файлам, подразумевающим обработку разных команд.
links.js./src/links.jsВ данном файле хранится информация о предметах и ссылках на Zoom.
image.js./src/image.jsОбертка для /citgen и /trollgen
automasticSender.js./src/automaticSender.jsЭтот файл нужен для отправки оповещений перед началом пар
start.js./src/commands/start.jsРеализация команды /start
commands.js./src/commands/commands.jsРеализация команды /команды. Она присылает полный список команд
help.js./src/commands/commands.jsРеализация команды /help
feedback.js./src/commands/feedback.jsРеализация команды /отзыв
citgen.js./src/commands/citgen.jsРеализация команды /citgen. Юмор - наше все
date.js./src/commands/date.jsРеализация команды /дата и смежных с ней
games.js./src/commands/games.jsРеализация игр бота
kicker.js./src/commands/kicker.jsРеализована команда /вгулаг, которая кикает любого пользователя. Плюс ее в том, что работать для того человека, который будет указан в config.js в поле ADMIN_ID
parser.js./src/commands/parser.jsПарсер domashka.txt
savedData./src/commands/savedData.jsРеализация команды /шпора и смежных с ней
troll.js./src/commands/troll.jsРеализация команды /тролль, которая коверкает слова, которые дает пользователь. Иногда выходит очень забавно
trollgen.js./src/commands/trollgen.jsАналог /citgen

Запуск бота

Чтобы запустить бота, введите следующую команду. Она устанавливает зависимости, необходимые для работы Schoolbot:

npm install

Далее, если у вас не работают команды /citgen и /trollgen, есть два пути: 1. Если у вас macOS, введите следующую команду через Homebrew:

brew install pkg-config cairo pango libpng jpeg giflib librsvg
  1. Если у вас Windows, то перейдите сюда

Команды

  1. /дата - отправляет клавиатуру с выбором дня недели, по нажатии на кнопку отправляется д/з на выбранный день.
  2. /дз завтра - отправляет домашние задания на завтра
  3. /дз все - отправляет домашние задания на всю неделю
  4. /игры - отправляет клавиатуру с выбором игр
  5. /отзыв - отправляет отзыв человеку, чей ID указан в конфиге. В принципе - вещь бестолковая, но кому нужно, тот найдет ей применение.
  6. /шпора - можно добавить важные фото/документы/шпоры, чтобы не искать потом по всей беседе. (При перегрузке/остановке бота все стирается, поэтому лучше сохранненые данные хранить в БД или еще где-нибудь)
  7. /тролль - перешлите чье-то сообщение и пишите эту команду
  8. /шпора ? - инструкция по шпорам
  9. /шпора список - список шпор
  10. /citgen - перешлите чье-то сообщение и напишите эту команду
  11. /trollgen - перешлите чье-то сообщение и пишите эту команду
  12. /help - документация бота

Список команд ограничивается вашей фантазией :) Дерзайте!

Планы

  • Перенос слов в цитгене
  • Четность недель
  • Автообновление парсера без перегрузки бота