L
Size: a a a
L
GV
.
NS
GV
NS
L
.
.
GV
.
GV
L
l
Bot
, в котором объявлено поле private Commands activeCommands
, оно передаётся объекту BotListenerAdapter extends net.dv8tion.jda.api.hooks.ListenerAdapter
, который передаётся JDABuilder'у при создании объекта JDA. Commands
— это просто обёрточка над HashSet<Command>
с дополнительным функционалом для быстрого поиска нужной команды и всяким таким. Command
— это абстрактный класс, от которого наследуются разные команды и реализуют соответствующую логику.BotListenerAdapter
обрабатывает получение сообщения в канале через @Override onMessageReceived
, проверяет наличие команды в activeCommands
и вызывает у неё метод action
(тот самый абстрактный метод с логикой), передавая параметры команды, после чего метод action
отрабатывает и возвращает некий результат, который там же в обработчике onMessageReceived
бот должен отправить ответом в канал дискорда Ну, чтобы не передавать в объект команды всякую муть, вроде объектов канала, отправителя и т.д. Команда отработала автономно, а ответом занимается уже BotListenedAdapter
, получив её результат.Command.action
и как отличить один вид результата от другого?l
enum CommandResult
с несколькими константами, определяющими разные виды результатов и эксклюзивными данными и методами для разных констант, но... как-то слегка отдаёт это костылём. Предусмотрены ли в джаве более подходящие и уместные способы реализации данной штуки?c
c
.
М
М