Этот шаблон - удобная оболочка для создания ботов ВК. Главным преимуществом является модульность и поддержка ООП.
Данный шаблон использует библиотеку vk-io
Чтобы начать использовать шаблон необходимо клонировать этот репозиторий к себе и установить все зависимости:
git clone https://github.com/dxqwww/ts-vk-bot-template
npm install
В главной директории шаблона присутствует файл config.json.template
, его структура:
{
"vk": {
"token": "YOUR_TOKEN",
"group_id": "YOUR_GROUP_ID",
"api_version": "YOUR_API_VERSION"
}
}
Меняем данные на свои и переименовываем файл в config.json
Собираем наш проект и запускаем:
npm run build
npm start
Если в консоле появились логи об успешном старте бота, значит всё работает.
Все разобранные ниже примеры находятся в директории /examples
данного репозитория
Любой модуль наследуется от базового класса Module
.
В модуле происходит установка принадлежащих ему команд.
import { Module, FactoryModuleOptions } from '@Main/module';
import { HelloCommand } from './command';
export type HelloModuleOptions = FactoryModuleOptions;
export class HelloModule extends Module {
public constructor({ ...options }: HelloModuleOptions) {
super({ ...options });
this.setCommands(
HelloCommand
);
}
}
Устанавливает доступные для текущего модуля команды.
protected setCommands(...commands: Constructor<Command>[]): void
Устанавливает условие для использование команд данного модуля.
Параметры
:
- ModuleCheckAccess:
- RegExp
- Middleware
protected setAccess(access: ModuleCheckAccess): void
Любая команда наследуется от базового класса Command
.
В команде устанавливается условие для её прослушки и callback функция,
которая вызывается, в случае, если прослушка сработала.
import { Command, FactoryCommandOptions } from '@Main/command';
import { HelloModule } from './module';
export type HelloCommandOptions = FactoryCommandOptions<HelloModule>;
export class HelloCommand extends Command<
HelloModule
> {
public constructor({ ...options }: HelloCommandOptions) {
super({ ...options });
this.setHearCondition(/^ping$/i);
this.setCallback(context => (
context.send("pong")
));
}
}
Устанавливает условие для прослушки команды.
Параметры
:
- CommandHearCondition
- RegExp
- Middleware
protected setHearCondition(hearCondition: CommandHearCondition): void
Устанавливает callback функцию команды.
Параметры
:
- CommandCallback
- Middleware
protected setCallback(callback: CommandCallback): void
Выражаю благодарность OctopuSSX за его osu! бота для ВК, который вдохновил меня на создание данного шаблона.