Search in sources :

Example 1 with GuildVoiceState

use of net.dv8tion.jda.api.entities.GuildVoiceState in project discord-bot-reddit-java by Glaxier0.

the class PauseCommand method execute.

@Override
public void execute(SlashCommandInteractionEvent event) {
    GuildVoiceState botVoiceState = event.getGuild().getSelfMember().getVoiceState();
    GuildVoiceState userVoiceState = event.getMember().getVoiceState();
    if (utils.channelControl(botVoiceState, userVoiceState)) {
        EmbedBuilder embedBuilder = new EmbedBuilder();
        PlayerManager.getInstance().getMusicManager(event).audioPlayer.setPaused(true);
        event.replyEmbeds(embedBuilder.setDescription("Song paused").setColor(Color.GREEN).build()).queue();
    } else {
        event.replyEmbeds(new EmbedBuilder().setDescription("Please be in a same voice channel as bot.").setColor(Color.RED).build()).queue();
    }
    net.dv8tion.jda.api.entities.User user = event.getUser();
    utils.counter(user.getId(), user.getAsTag());
}
Also used : EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) GuildVoiceState(net.dv8tion.jda.api.entities.GuildVoiceState)

Example 2 with GuildVoiceState

use of net.dv8tion.jda.api.entities.GuildVoiceState in project discord-bot-reddit-java by Glaxier0.

the class ResumeCommand method execute.

@Override
public void execute(SlashCommandInteractionEvent event) {
    GuildVoiceState botVoiceState = event.getGuild().getSelfMember().getVoiceState();
    GuildVoiceState userVoiceState = event.getMember().getVoiceState();
    if (utils.channelControl(botVoiceState, userVoiceState)) {
        EmbedBuilder embedBuilder = new EmbedBuilder();
        PlayerManager.getInstance().getMusicManager(event).audioPlayer.setPaused(false);
        event.replyEmbeds(embedBuilder.setDescription("Song resumed").setColor(Color.GREEN).build()).queue();
    } else {
        event.replyEmbeds(new EmbedBuilder().setDescription("Please be in a same voice channel as bot.").setColor(Color.RED).build()).queue();
    }
    net.dv8tion.jda.api.entities.User user = event.getUser();
    utils.counter(user.getId(), user.getAsTag());
}
Also used : EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) GuildVoiceState(net.dv8tion.jda.api.entities.GuildVoiceState)

Example 3 with GuildVoiceState

use of net.dv8tion.jda.api.entities.GuildVoiceState in project toby-bot by ml404.

the class ShhCommand method handle.

@Override
public void handle(CommandContext ctx, String prefix, UserDto requestingUserDto, Integer deleteDelay) {
    ICommand.deleteAfter(ctx.getMessage(), deleteDelay);
    final TextChannel channel = ctx.getChannel();
    final Member member = ctx.getMember();
    final GuildVoiceState memberVoiceState = member.getVoiceState();
    final VoiceChannel memberChannel = memberVoiceState.getChannel();
    memberChannel.getMembers().forEach(target -> {
        if (!member.canInteract(target) || !member.hasPermission(Permission.VOICE_MUTE_OTHERS) || !requestingUserDto.isSuperUser()) {
            channel.sendMessage(String.format("You aren't allowed to mute %s", target)).queue(message -> ICommand.deleteAfter(message, deleteDelay));
            return;
        }
        final Member bot = ctx.getSelfMember();
        if (!bot.hasPermission(Permission.VOICE_MUTE_OTHERS)) {
            channel.sendMessage(String.format("I'm not allowed to mute %s", target)).queue(message -> ICommand.deleteAfter(message, deleteDelay));
            return;
        }
        ctx.getGuild().mute(target, true).reason("Muted for Among Us.").queue();
    });
}
Also used : TextChannel(net.dv8tion.jda.api.entities.TextChannel) GuildVoiceState(net.dv8tion.jda.api.entities.GuildVoiceState) VoiceChannel(net.dv8tion.jda.api.entities.VoiceChannel) Member(net.dv8tion.jda.api.entities.Member)

Example 4 with GuildVoiceState

use of net.dv8tion.jda.api.entities.GuildVoiceState in project toby-bot by ml404.

the class IMusicCommand method isInvalidChannelStateForCommand.

static boolean isInvalidChannelStateForCommand(CommandContext ctx, TextChannel channel, Integer deleteDelay) {
    final Member self = ctx.getSelfMember();
    final GuildVoiceState selfVoiceState = self.getVoiceState();
    if (!selfVoiceState.inVoiceChannel()) {
        channel.sendMessage("I need to be in a voice channel for this to work").queue(message -> ICommand.deleteAfter(message, deleteDelay));
        return true;
    }
    final Member member = ctx.getMember();
    final GuildVoiceState memberVoiceState = member.getVoiceState();
    if (!memberVoiceState.inVoiceChannel()) {
        channel.sendMessage("You need to be in a voice channel for this command to work").queue(message -> ICommand.deleteAfter(message, deleteDelay));
        return true;
    }
    if (!memberVoiceState.getChannel().equals(selfVoiceState.getChannel())) {
        channel.sendMessage("You need to be in the same voice channel as me for this to work").queue(message -> ICommand.deleteAfter(message, deleteDelay));
        return true;
    }
    return false;
}
Also used : GuildVoiceState(net.dv8tion.jda.api.entities.GuildVoiceState) Member(net.dv8tion.jda.api.entities.Member)

Example 5 with GuildVoiceState

use of net.dv8tion.jda.api.entities.GuildVoiceState in project Bean by Xirado.

the class InteractionCommandHandler method handleSlashCommand.

public void handleSlashCommand(@NotNull SlashCommandInteractionEvent event, @Nullable Member member) {
    Runnable r = () -> {
        try {
            if (!event.isFromGuild())
                return;
            Guild guild = event.getGuild();
            SlashCommand command = null;
            long guildId = event.getGuild().getIdLong();
            if (registeredGuildCommands.containsKey(guildId)) {
                List<SlashCommand> guildCommands = registeredGuildCommands.get(guildId).stream().filter(cmd -> cmd instanceof SlashCommand).map(cmd -> (SlashCommand) cmd).toList();
                SlashCommand guildCommand = guildCommands.stream().filter(cmd -> cmd.getCommandName().equalsIgnoreCase(event.getName())).findFirst().orElse(null);
                if (guildCommand != null)
                    command = guildCommand;
            }
            if (command == null) {
                SlashCommand globalCommand = getRegisteredSlashCommands().stream().filter(cmd -> cmd.getCommandName().equalsIgnoreCase(event.getName())).findFirst().orElse(null);
                if (globalCommand != null)
                    command = globalCommand;
            }
            if (command != null) {
                SlashCommandContext ctx = new SlashCommandContext(event);
                List<Permission> neededPermissions = command.getRequiredUserPermissions();
                List<Permission> neededBotPermissions = command.getRequiredBotPermissions();
                if (neededPermissions != null && !member.hasPermission((GuildChannel) event.getChannel(), neededPermissions)) {
                    event.reply(LocaleLoader.ofGuild(guild).get("general.no_perms", String.class)).queue();
                    return;
                }
                if (neededBotPermissions != null && !event.getGuild().getSelfMember().hasPermission((GuildChannel) event.getChannel(), neededBotPermissions)) {
                    event.reply(LocaleLoader.ofGuild(guild).get("general.no_bot_perms1", String.class)).queue();
                    return;
                }
                if (command.getCommandFlags().contains(CommandFlag.DJ_ONLY)) {
                    if (!ctx.getGuildData().isDJ(member)) {
                        event.replyEmbeds(EmbedUtil.errorEmbed("You need to be a DJ to do this!")).queue();
                        return;
                    }
                }
                if (command.getCommandFlags().contains(CommandFlag.MUST_BE_IN_VC)) {
                    GuildVoiceState guildVoiceState = member.getVoiceState();
                    if (guildVoiceState == null || !guildVoiceState.inAudioChannel()) {
                        event.replyEmbeds(EmbedUtil.errorEmbed("You are not connected to a voice-channel!")).queue();
                        return;
                    }
                }
                if (command.getCommandFlags().contains(CommandFlag.MUST_BE_IN_SAME_VC)) {
                    GuildVoiceState voiceState = member.getVoiceState();
                    AudioManager manager = event.getGuild().getAudioManager();
                    if (manager.isConnected()) {
                        if (!manager.getConnectedChannel().equals(voiceState.getChannel())) {
                            event.replyEmbeds(EmbedUtil.errorEmbed("You must be listening in " + manager.getConnectedChannel().getAsMention() + "to do this!")).setEphemeral(true).queue();
                            return;
                        }
                    }
                }
                if (command.getCommandFlags().contains(CommandFlag.REQUIRES_LAVALINK_NODE)) {
                    if (!ctx.isLavalinkNodeAvailable()) {
                        event.replyEmbeds(EmbedUtil.errorEmbed("There are currently no voice nodes available!\nIf the issue persists, please leave a message on our support server!")).addActionRow(Util.getSupportButton()).queue();
                        return;
                    }
                }
                command.executeCommand(event, ctx);
                Metrics.COMMANDS.labels("success").inc();
            }
        } catch (Exception e) {
            Metrics.COMMANDS.labels("failed").inc();
            LinkedDataObject translation = event.getGuild() == null ? LocaleLoader.getForLanguage("en_US") : LocaleLoader.ofGuild(event.getGuild());
            if (event.isAcknowledged())
                event.getHook().sendMessageEmbeds(EmbedUtil.errorEmbed(translation.getString("general.unknown_error_occured"))).setEphemeral(true).queue(s -> {
                }, ex -> {
                });
            else
                event.replyEmbeds(EmbedUtil.errorEmbed(translation.getString("general.unknown_error_occured"))).setEphemeral(true).queue(s -> {
                }, ex -> {
                });
            LOGGER.error("Could not execute slash-command", e);
            StringBuilder path = new StringBuilder("/" + event.getCommandPath().replace("/", " "));
            for (OptionMapping option : event.getOptions()) {
                path.append(" *").append(option.getName()).append("* : ").append("`").append(option.getAsString()).append("`");
            }
            EmbedBuilder builder = new EmbedBuilder().setTitle("An error occurred while executing a slash-command!").addField("Guild", event.getGuild() == null ? "None (Direct message)" : event.getGuild().getIdLong() + " (" + event.getGuild().getName() + ")", true).addField("Channel", event.getGuild() == null ? "None (Direct message)" : event.getChannel().getName(), true).addField("User", event.getUser().getAsMention() + " (" + event.getUser().getAsTag() + ")", true).addField("Command", path.toString(), false).setColor(EmbedUtil.ERROR_COLOR);
            event.getJDA().openPrivateChannelById(Bean.OWNER_ID).flatMap(c -> c.sendMessageEmbeds(builder.build()).content("```fix\n" + ExceptionUtils.getStackTrace(e) + "\n```")).queue();
        }
    };
    Bean.getInstance().getCommandExecutor().execute(r);
}
Also used : LocaleLoader(at.xirado.bean.translation.LocaleLoader) MessageContextInteractionEvent(net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent) Permission(net.dv8tion.jda.api.Permission) AudioManager(net.dv8tion.jda.api.managers.AudioManager) LoggerFactory(org.slf4j.LoggerFactory) Util(at.xirado.bean.misc.Util) Member(net.dv8tion.jda.api.entities.Member) Command(net.dv8tion.jda.api.interactions.commands.Command) ArrayList(java.util.ArrayList) at.xirado.bean.command.slashcommands.moderation(at.xirado.bean.command.slashcommands.moderation) UserContextInteractionEvent(net.dv8tion.jda.api.events.interaction.command.UserContextInteractionEvent) Guild(net.dv8tion.jda.api.entities.Guild) at.xirado.bean.command.slashcommands.music(at.xirado.bean.command.slashcommands.music) GuildVoiceState(net.dv8tion.jda.api.entities.GuildVoiceState) OptionMapping(net.dv8tion.jda.api.interactions.commands.OptionMapping) Map(java.util.Map) GenericCommand(at.xirado.bean.command.GenericCommand) SlashCommand(at.xirado.bean.command.SlashCommand) EmbedUtil(at.xirado.bean.misc.EmbedUtil) UserContextCommand(at.xirado.bean.command.context.UserContextCommand) MockContextMenuCommand(at.xirado.bean.command.context.message.MockContextMenuCommand) Logger(org.slf4j.Logger) at.xirado.bean.command.slashcommands(at.xirado.bean.command.slashcommands) GuildChannel(net.dv8tion.jda.api.entities.GuildChannel) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Metrics(at.xirado.bean.misc.Metrics) SlashCommandInteractionEvent(net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent) MessageContextCommand(at.xirado.bean.command.context.MessageContextCommand) CommandAutoCompleteInteractionEvent(net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) Consumer(java.util.function.Consumer) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) CommandFlag(at.xirado.bean.command.CommandFlag) at.xirado.bean.command.slashcommands.leveling(at.xirado.bean.command.slashcommands.leveling) SlashCommandContext(at.xirado.bean.command.SlashCommandContext) CommandListUpdateAction(net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction) Bean(at.xirado.bean.Bean) NotNull(org.jetbrains.annotations.NotNull) Collections(java.util.Collections) SlapContextMenuCommand(at.xirado.bean.command.context.user.SlapContextMenuCommand) LinkedDataObject(at.xirado.bean.data.LinkedDataObject) ExceptionUtils(org.apache.commons.lang3.exception.ExceptionUtils) OptionMapping(net.dv8tion.jda.api.interactions.commands.OptionMapping) LinkedDataObject(at.xirado.bean.data.LinkedDataObject) GuildVoiceState(net.dv8tion.jda.api.entities.GuildVoiceState) Guild(net.dv8tion.jda.api.entities.Guild) SlashCommand(at.xirado.bean.command.SlashCommand) SlashCommandContext(at.xirado.bean.command.SlashCommandContext) AudioManager(net.dv8tion.jda.api.managers.AudioManager) GuildChannel(net.dv8tion.jda.api.entities.GuildChannel) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) ArrayList(java.util.ArrayList) List(java.util.List)

Aggregations

GuildVoiceState (net.dv8tion.jda.api.entities.GuildVoiceState)51 EmbedBuilder (net.dv8tion.jda.api.EmbedBuilder)16 Member (net.dv8tion.jda.api.entities.Member)16 LogUtils (main.utils.json.logs.LogUtils)13 AudioManager (net.dv8tion.jda.api.managers.AudioManager)12 Guild (net.dv8tion.jda.api.entities.Guild)11 TextChannel (net.dv8tion.jda.api.entities.TextChannel)9 VoiceChannel (net.dv8tion.jda.api.entities.VoiceChannel)9 ArrayList (java.util.ArrayList)7 Permission (net.dv8tion.jda.api.Permission)5 CommandFlag (at.xirado.bean.command.CommandFlag)4 SlashCommand (at.xirado.bean.command.SlashCommand)4 SlashCommandContext (at.xirado.bean.command.SlashCommandContext)4 EmbedUtil (at.xirado.bean.misc.EmbedUtil)4 Message (net.dv8tion.jda.api.entities.Message)4 Bean (at.xirado.bean.Bean)3 GenericCommand (at.xirado.bean.command.GenericCommand)3 MessageContextCommand (at.xirado.bean.command.context.MessageContextCommand)3 UserContextCommand (at.xirado.bean.command.context.UserContextCommand)3 MockContextMenuCommand (at.xirado.bean.command.context.message.MockContextMenuCommand)3