package io.shockah.skylark.botcontrol; import org.pircbotx.Channel; import org.pircbotx.hooks.events.InviteEvent; import io.shockah.skylark.Bot; import io.shockah.skylark.BotManager; import io.shockah.skylark.commands.CommandsPlugin; import io.shockah.skylark.permissions.PermissionsPlugin; import io.shockah.skylark.plugin.ListenerPlugin; import io.shockah.skylark.plugin.PluginManager; public class BotControlPlugin extends ListenerPlugin { @Dependency protected CommandsPlugin commandsPlugin; @Dependency protected PermissionsPlugin permissionsPlugin; private JoinCommand joinCommand; private PartCommand partCommand; private ReloadModulesCommand reloadModulesCommand; public BotControlPlugin(PluginManager manager, Info info) { super(manager, info); } @Override protected void onLoad() { commandsPlugin.addNamedCommands( joinCommand = new JoinCommand(this), partCommand = new PartCommand(this), reloadModulesCommand = new ReloadModulesCommand(this) ); } @Override protected void onUnload() { commandsPlugin.removeNamedCommands( joinCommand, partCommand, reloadModulesCommand ); } public JoinCommand getJoinCommand() { return joinCommand; } public PartCommand getPartCommand() { return partCommand; } @Override protected void onInvite(InviteEvent e) { BotManager manager = e.<Bot>getBot().manager; Bot foundBot = manager.bots.firstResult(bot -> { for (Channel channel : bot.getUserBot().getChannels()) { if (channel.getName().equals(e.getChannel())) return bot; } return null; }); if (foundBot != null) return; manager.joinChannel(e.getChannel()); } }