В файле app.ts
вы можете найти класс Bot
, который является основной сущностью этого бота.
Этот класс отвечает за всю работу с VK API
, обработку сообщений и логику работы бота.
В конструкторе класса вы можете увидеть следующую логику:
- подключение к базе данных с помощью
Prisma
; - сохранение ссылок на instance
Prisma
иVK API
в свойствахbot
иuser
соответственно; - установка обработчика для event
'message_new'
; - запуск обновлений сообщений с помощью метода
start()
API VK.
При запуске бота в конструкторе происходит чтение из базы данных пользователя,
который запустил бота, а также сохранение ссылки на него в свойстве bot.owner
.
Также в конструкторе вы можете увидеть вызов метода setupCommands()
,
который инициализирует все команды, доступные в боте.
Эти команды хранятся в свойстве commands
в виде Map
, где ключ - это название команды, а значение - указатель на соответствующий класс.
При получении нового сообщения bot
обрабатывает его следующим образом:
- проверяет, является ли сообщение командой;
- если сообщение - команда, то выполняет соответствующую логику с помощью вызова метода
handleCommand()
на соответствующем классе команды.
Если в сообщении нет команды, то выполняется логика по-умолчанию, которая отправляет сообщение о том, что не понял команду.
Надеюсь, что это поможет понять, как работает этот бот.
На самом деле, если вы хотите запустить скрипт для одной станицы - вы можете просто написать следующий код в конце файла app.ts
:
const prismaClient = new PrismaClient();
(async () => {
const user = await prismaClient.user.findUnique({
where: {
id: 12345678,
},
});
const bot = new Bot(prismaClient, user);
bot.start();
})();