Skip to content

Commit

Permalink
New Update
Browse files Browse the repository at this point in the history
1. Fix
  • Loading branch information
megoRU committed May 22, 2024
1 parent 287555e commit 69d6ac3
Show file tree
Hide file tree
Showing 10 changed files with 134 additions and 90 deletions.
2 changes: 1 addition & 1 deletion src/main/java/main/config/BotStart.java
Original file line number Diff line number Diff line change
Expand Up @@ -565,9 +565,9 @@ public void setGiveawayAndUsersInGift() {
public void stopGiveawayTimer() {
GiveawayRegistry instance = GiveawayRegistry.getInstance();
List<Giveaway> 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);
Expand Down
33 changes: 30 additions & 3 deletions src/main/java/main/core/events/CheckBot.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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();
}
}
}
58 changes: 42 additions & 16 deletions src/main/java/main/core/events/HelpCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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:941286272390037535> - Start Giveaway with lots of parameters
</stop:941286272390037536> - Stop Giveaway
</scheduling:1102283573349851166> - Run scheduled Giveaway
</cancel:1102283573349851167> - Cancel Giveaway
</reroll:957624805446799452> - Reroll one winner by Giveaway ID
</predefined:1049647289779630080> - Gather participants and immediately hold a drawing for a certain @Role.
</list:941286272390037538> - List of participants
</language:941286272390037534> - Setup Bot Language
</participants:952572018077892638> - Get a list of participants by the Giveaway ID
</check-bot-permission:1009065886335914054> - Check bot permissions
</change:1027901550456225842> - Change the active Giveaway time
</patreon:945299399855210527> - Patreon
""", false);
String.format("""
</start:941286272390037535> - %s
</stop:941286272390037536> - %s
</scheduling:1102283573349851166> - %s
</cancel:1102283573349851167> - %s
</reroll:957624805446799452> - %s
</predefined:1049647289779630080> - %s
</list:941286272390037538> - %s
</language:941286272390037534> - %s
</participants:952572018077892638> - %s
</check-bot-permission:1009065886335914054> - %s
</change:1027901550456225842> - %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);
Expand All @@ -48,8 +71,11 @@ public void help(@NotNull SlashCommandInteractionEvent event) {

List<Button> buttons = new ArrayList<>();
buttons.add(Button.link("https://discord.gg/UrWG3R683d", "Support"));
if (BotStart.getMapLanguages().get(guildId) != null) {
if (BotStart.getMapLanguages().get(guildId).equals("eng")) {

Settings settings = BotStart.getMapLanguages().get(guildId);

if (settings != null) {
if (settings.getLanguage().equals("eng")) {
buttons.add(Button.secondary(guildId + ":" + ButtonChangeLanguage.CHANGE_LANGUAGE, "Сменить язык ")
.withEmoji(Emoji.fromUnicode("U+1F1F7U+1F1FA")));
} else {
Expand Down
9 changes: 6 additions & 3 deletions src/main/java/main/core/events/SchedulingCommand.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package main.core.events;

import main.giveaway.ChecksClass;
import main.giveaway.GiveawayUtils;
import main.jsonparser.JSONParsers;
import main.model.entity.ActiveGiveaways;
Expand Down Expand Up @@ -56,8 +55,12 @@ public void scheduling(@NotNull SlashCommandInteractionEvent event) {
return;
}

boolean canSendGiveaway = ChecksClass.canSendGiveaway(textChannel, event);
if (!canSendGiveaway) return; //Сообщение уже отправлено
boolean checkPermissions = GiveawayUtils.checkPermissions(textChannel, event.getGuild().getSelfMember());
if (!checkPermissions) {
String botPermissionsDeny = jsonParsers.getLocale("bot_permissions_deny", guildId);
event.reply(botPermissionsDeny).queue();
return; //Сообщение уже отправлено
}

//Обработать уведомление
event.deferReply().setEphemeral(true).queue();
Expand Down
21 changes: 14 additions & 7 deletions src/main/java/main/core/events/StartCommand.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
package main.core.events;

import main.controller.UpdateController;
import main.giveaway.ChecksClass;
import main.giveaway.Giveaway;
import main.giveaway.GiveawayRegistry;
import main.giveaway.GiveawayUtils;
import main.jsonparser.JSONParsers;
import main.model.entity.Scheduling;
import main.model.repository.ActiveGiveawayRepository;
import main.model.repository.ListUsersRepository;
import main.model.repository.ParticipantsRepository;
import main.model.repository.SchedulingRepository;
import main.service.GiveawayRepositoryService;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.channel.unions.GuildMessageChannelUnion;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -43,11 +42,19 @@ public StartCommand(ActiveGiveawayRepository activeGiveawayRepository,
}

public void start(@NotNull SlashCommandInteractionEvent event, UpdateController updateController) {
boolean canSendGiveaway = ChecksClass.canSendGiveaway(event.getGuildChannel(), event);
if (!canSendGiveaway) return; //Сообщение уже отправлено
GuildMessageChannelUnion channel = event.getGuildChannel();
Guild guild = event.getGuild();
if (guild == null) return;

boolean checkPermissions = GiveawayUtils.checkPermissions(channel, guild.getSelfMember());
if (!checkPermissions) {
String botPermissionsDeny = jsonParsers.getLocale("bot_permissions_deny", guild.getIdLong());
event.reply(botPermissionsDeny).queue();
return; //Сообщение уже отправлено
}

var guildIdLong = Objects.requireNonNull(event.getGuild()).getIdLong();
var guildId = Objects.requireNonNull(event.getGuild()).getIdLong();
var guildIdLong = Objects.requireNonNull(guild).getIdLong();
var guildId = Objects.requireNonNull(guild).getIdLong();
var userIdLong = event.getUser().getIdLong();
String title = event.getOption("title", OptionMapping::getAsString);
String countString = event.getOption("count", OptionMapping::getAsString);
Expand Down
55 changes: 0 additions & 55 deletions src/main/java/main/giveaway/ChecksClass.java

This file was deleted.

2 changes: 1 addition & 1 deletion src/main/java/main/giveaway/Giveaway.java
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ public synchronized void stopGiveaway(final int countWinner) {
"""
\n
stopGift method:
\s
Guild ID: %s
ListUsersSize: %s
CountWinners: %s
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/main/giveaway/GiveawayUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
import main.jsonparser.JSONParsers;
import main.model.entity.Settings;
import net.dv8tion.jda.api.EmbedBuilder;
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.events.interaction.command.SlashCommandInteractionEvent;
import org.jetbrains.annotations.NotNull;

Expand All @@ -21,6 +24,15 @@ public class GiveawayUtils {
public static final String TIME_REGEX = "(\\d{4}.\\d{2}.\\d{2}\\s\\d{2}:\\d{2})|(\\d{1,2}[smhdсмдч]|\\s)+";
public static final JSONParsers jsonParsers = new JSONParsers();

public static boolean checkPermissions(GuildChannel guildChannel, Member selfMember) {
return selfMember.hasPermission(guildChannel,
Permission.MESSAGE_ADD_REACTION,
Permission.MESSAGE_EMBED_LINKS,
Permission.MESSAGE_HISTORY,
Permission.VIEW_CHANNEL,
Permission.MESSAGE_SEND);
}

public static long getSeconds(String time) {
String[] splitTime = time.split("\\s+");
long seconds = 0;
Expand Down
16 changes: 14 additions & 2 deletions src/main/resources/json/eng.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
"gift_url": "[Link to Giveaway](%s)",
"gift_reaction": "React with :tada: to enter!",
"gift_permissions": "The bot has all the necessary permissions in: <#%s>",
"check_permissions": "Bot don't have in <#%s>\n%s",
"check_permissions": "Bot don't have in <#%s>\n\n%s",
"start_in_thread": "It is forbidden to create <@808277484524011531> in Thread!",
"start_in_not_text_channels": "You can create <@808277484524011531> only in TextChannels!",
"start_wrong_time": "You set the time incorrectly: `%s`\n %s",
Expand All @@ -67,5 +67,17 @@
"gift_hosted": "\nCreator: <@%s>",
"cancel_scheduling_giveaway": "Successfully cancelled the scheduled Giveaway!",
"cancel_giveaway": "Giveaway was successfully canceled!",
"no_active_giveaway": "No access or no active Giveaway!"
"no_active_giveaway": "No access or no active Giveaway!",
"bot_permissions_deny": "The bot does not have permissions in this channel: </check-bot-permission:1009065886335914054>",
"help_start": "Start Giveaway with lots of parameters",
"help_stop": "Stop Giveaway",
"help_scheduling": "Run scheduled Giveaway",
"help_cancel": "Cancel Giveaway",
"help_reroll": "Reroll one winner by Giveaway ID",
"help_predefined": "Gather participants and immediately hold a drawing for a certain @Role.",
"help_list": "List of participants",
"help_language": "Setup Bot Language",
"help_participants": "Get a list of participants by the Giveaway ID",
"help_permissions": "Check bot permissions",
"help_change": "Change the active Giveaway time"
}
16 changes: 14 additions & 2 deletions src/main/resources/json/rus.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
"gift_url": "[Ссылка на Giveaway](%s)",
"gift_reaction": "Ставьте :tada: чтобы участвовать!",
"gift_permissions": "Бот имеет все необходимые разрешения в: <#%s>",
"check_permissions": "У бота нет в <#%s>\n%s",
"check_permissions": "У бота нет в <#%s>\n\n%s",
"start_in_thread": "Запрещено создавать <@808277484524011531> в Thread!",
"start_in_not_text_channels": "Можно создавать <@808277484524011531> только в TextChannels!",
"start_wrong_time": "Вы неправильно задали время: `%s`\n %s",
Expand All @@ -67,5 +67,17 @@
"gift_hosted": "\nСоздатель: <@%s>",
"cancel_scheduling_giveaway": "Успешно отменили запланированный Giveaway!",
"cancel_giveaway": "Успешно отменили Giveaway!",
"no_active_giveaway": "Нет доступа или нет активных Giveaway!"
"no_active_giveaway": "Нет доступа или нет активных Giveaway!",
"bot_permissions_deny": "У бота нет разрешений в этом канале: </check-bot-permission:1009065886335914054>",
"help_start": "Запустить Giveaway с множеством параметров",
"help_stop": "Остановить Giveaway",
"help_scheduling": "Запустить запланированный Giveaway",
"help_cancel": "Отменить Giveaway",
"help_reroll": "Перевыбрать одного победителя по ID Giveaway",
"help_predefined": "Собрать участников и немедленно провести Giveaway для определенной @Роли.",
"help_list": "Список участников",
"help_language": "Настроить язык бота",
"help_participants": "Получить список участников по ID Giveaway",
"help_permissions": "Проверить разрешения бота",
"help_change": "Изменить время активного Giveaway"
}

0 comments on commit 69d6ac3

Please sign in to comment.