diff --git a/src/main/java/main/config/BotStart.java b/src/main/java/main/config/BotStart.java index ab4f58b..37aab1a 100644 --- a/src/main/java/main/config/BotStart.java +++ b/src/main/java/main/config/BotStart.java @@ -565,9 +565,9 @@ public void setGiveawayAndUsersInGift() { public void stopGiveawayTimer() { GiveawayRegistry instance = GiveawayRegistry.getInstance(); List giveawayDataList = new LinkedList<>(instance.getAllGiveaway()); + StopGiveawayHandler stopGiveawayHandler = new StopGiveawayHandler(); for (Giveaway giveaway : giveawayDataList) { try { - StopGiveawayHandler stopGiveawayHandler = new StopGiveawayHandler(); stopGiveawayHandler.handleGiveaway(giveaway); } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); diff --git a/src/main/java/main/core/events/CheckBot.java b/src/main/java/main/core/events/CheckBot.java index bfb0f1d..73aa37f 100644 --- a/src/main/java/main/core/events/CheckBot.java +++ b/src/main/java/main/core/events/CheckBot.java @@ -1,7 +1,8 @@ package main.core.events; -import main.giveaway.ChecksClass; import main.jsonparser.JSONParsers; +import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; import net.dv8tion.jda.api.entities.channel.unions.GuildChannelUnion; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; @@ -18,13 +19,39 @@ public class CheckBot { public void check(@NotNull SlashCommandInteractionEvent event) { var guildId = Objects.requireNonNull(event.getGuild()).getIdLong(); + Member selfMember = event.getGuild().getSelfMember(); GuildChannelUnion textChannel = event.getOption("textchannel", OptionMapping::getAsChannel); GuildChannel guildChannel = textChannel != null ? textChannel : event.getGuildChannel().asTextChannel(); - boolean canSendGiveaway = ChecksClass.canSendGiveaway(guildChannel, event); - if (canSendGiveaway) { + + StringBuilder stringBuilder = new StringBuilder(); + + if (!selfMember.hasPermission(textChannel, Permission.MESSAGE_SEND)) { + stringBuilder.append("`Permission.MESSAGE_SEND`"); + } + + if (!selfMember.hasPermission(textChannel, Permission.VIEW_CHANNEL)) { + stringBuilder.append(stringBuilder.isEmpty() ? "`Permission.VIEW_CHANNEL`" : ",\n`Permission.VIEW_CHANNEL`"); + } + + if (!selfMember.hasPermission(textChannel, Permission.MESSAGE_HISTORY)) { + stringBuilder.append(stringBuilder.isEmpty() ? "`Permission.MESSAGE_HISTORY`" : ",\n`Permission.MESSAGE_HISTORY`"); + } + + if (!selfMember.hasPermission(textChannel, Permission.MESSAGE_EMBED_LINKS)) { + stringBuilder.append(stringBuilder.isEmpty() ? "`Permission.MESSAGE_EMBED_LINKS`" : ",\n`Permission.MESSAGE_EMBED_LINKS`"); + } + + if (!selfMember.hasPermission(textChannel, Permission.MESSAGE_ADD_REACTION)) { + stringBuilder.append(stringBuilder.isEmpty() ? "`Permission.MESSAGE_ADD_REACTION`" : ",\n`Permission.MESSAGE_ADD_REACTION`"); + } + + if (stringBuilder.isEmpty()) { String giftPermissions = String.format(jsonParsers.getLocale("gift_permissions", guildId), guildChannel.getId()); event.reply(giftPermissions).queue(); + } else { + String checkPermissions = jsonParsers.getLocale("check_permissions", event.getGuild().getIdLong()); + event.reply(String.format(checkPermissions, event.getChannel().getId(), stringBuilder)).queue(); } } } \ No newline at end of file diff --git a/src/main/java/main/core/events/HelpCommand.java b/src/main/java/main/core/events/HelpCommand.java index 756e1a7..7320a07 100644 --- a/src/main/java/main/core/events/HelpCommand.java +++ b/src/main/java/main/core/events/HelpCommand.java @@ -2,6 +2,7 @@ import main.config.BotStart; import main.jsonparser.JSONParsers; +import main.model.entity.Settings; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; @@ -22,24 +23,46 @@ public class HelpCommand { public void help(@NotNull SlashCommandInteractionEvent event) { var guildId = Objects.requireNonNull(event.getGuild()).getIdLong(); + String helpStart = jsonParsers.getLocale("help_start", guildId); + String helpStop = jsonParsers.getLocale("help_stop", guildId); + String helpScheduling = jsonParsers.getLocale("help_scheduling", guildId); + String helpCancel = jsonParsers.getLocale("help_cancel", guildId); + String helpReroll = jsonParsers.getLocale("help_reroll", guildId); + String helpPredefined = jsonParsers.getLocale("help_predefined", guildId); + String helpList = jsonParsers.getLocale("help_list", guildId); + String helpLanguage = jsonParsers.getLocale("help_language", guildId); + String helpParticipants = jsonParsers.getLocale("help_participants", guildId); + String helpPermissions = jsonParsers.getLocale("help_permissions", guildId); + String helpChange = jsonParsers.getLocale("help_change", guildId); + EmbedBuilder info = new EmbedBuilder(); info.setColor(Color.GREEN); info.setTitle("Giveaway"); info.addField("Slash Commands", - """ - - Start Giveaway with lots of parameters - - Stop Giveaway - - Run scheduled Giveaway - - Cancel Giveaway - - Reroll one winner by Giveaway ID - - Gather participants and immediately hold a drawing for a certain @Role. - - List of participants - - Setup Bot Language - - Get a list of participants by the Giveaway ID - - Check bot permissions - - Change the active Giveaway time - - Patreon - """, false); + String.format(""" + - %s + - %s + - %s + - %s + - %s + - %s + - %s + - %s + - %s + - %s + - %s + """, + helpStart, + helpStop, + helpScheduling, + helpCancel, + helpReroll, + helpPredefined, + helpList, + helpLanguage, + helpParticipants, + helpPermissions, + helpChange), false); String messagesEventsLinks = jsonParsers.getLocale("messages_events_links", guildId); String messagesEventsSite = jsonParsers.getLocale("messages_events_site", guildId); String messagesEventsAddMeToOtherGuilds = jsonParsers.getLocale("messages_events_add_me_to_other_guilds", guildId); @@ -48,8 +71,11 @@ public void help(@NotNull SlashCommandInteractionEvent event) { List