Skip to content

dxqwww/ts-vk-bot-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

First

TypeScript шаблон для создания ботов ВК

Этот шаблон - удобная оболочка для создания ботов ВК. Главным преимуществом является модульность и поддержка ООП.

Данный шаблон использует библиотеку 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
    );
  }
}

Основные методы

setCommands

Устанавливает доступные для текущего модуля команды.

protected setCommands(...commands: Constructor<Command>[]): void

setAccess

Устанавливает условие для использование команд данного модуля.

Параметры:

  • 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")
        ));
    }
}

Основные методы

setHearCondition

Устанавливает условие для прослушки команды.

Параметры:

  • CommandHearCondition
    • RegExp
    • Middleware
protected setHearCondition(hearCondition: CommandHearCondition): void

setCallback

Устанавливает callback функцию команды.

Параметры:

  • CommandCallback
    • Middleware
protected setCallback(callback: CommandCallback): void

Заключение

Выражаю благодарность OctopuSSX за его osu! бота для ВК, который вдохновил меня на создание данного шаблона.

License

MIT

About

Typescript шаблон для создания ботов Вконтакте

Topics

Resources

License

Stars

Watchers

Forks