forked from SteamWar/SteamWar
Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -32,18 +32,20 @@ import de.steamwar.velocitycore.discord.util.AuthManager;
|
||||
import lombok.Getter;
|
||||
import net.dv8tion.jda.api.*;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.entities.emoji.Emoji;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.exceptions.ErrorResponseException;
|
||||
import net.dv8tion.jda.api.interactions.commands.Command;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
|
||||
import net.dv8tion.jda.api.interactions.commands.build.Commands;
|
||||
import net.dv8tion.jda.api.interactions.commands.build.OptionData;
|
||||
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||
import net.dv8tion.jda.api.interactions.components.Button;
|
||||
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
||||
import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction;
|
||||
import net.dv8tion.jda.api.utils.MemberCachePolicy;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
|
||||
|
||||
import javax.security.auth.login.LoginException;
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
@@ -87,15 +89,11 @@ public class DiscordBot {
|
||||
public DiscordBot(DiscordConfig config) {
|
||||
this.config = config;
|
||||
|
||||
try {
|
||||
jda = JDABuilder
|
||||
.createDefault(config.getToken())
|
||||
.setStatus(OnlineStatus.ONLINE)
|
||||
.setMemberCachePolicy(MemberCachePolicy.ONLINE)
|
||||
.build();
|
||||
} catch (LoginException e) {
|
||||
throw new SecurityException("Could not login", e);
|
||||
}
|
||||
jda = JDABuilder
|
||||
.createDefault(config.getToken())
|
||||
.setStatus(OnlineStatus.ONLINE)
|
||||
.setMemberCachePolicy(MemberCachePolicy.ONLINE)
|
||||
.build();
|
||||
|
||||
instance = this;
|
||||
VelocityCore.schedule(this::asyncInit).schedule();
|
||||
@@ -109,9 +107,9 @@ public class DiscordBot {
|
||||
}
|
||||
|
||||
activity();
|
||||
new StaticMessageChannel(config.channel("roles"), () -> new MessageBuilder()
|
||||
new StaticMessageChannel(config.channel("roles"), () -> new MessageCreateBuilder()
|
||||
.setContent("**Rollenvergabe**\nKlicke um eine Rolle zu bekommen:")
|
||||
.setActionRows(ActionRow.of(config.getRoles().values().stream().map(DiscordConfig.DiscordRole::toButton).toArray(Button[]::new))), event -> InteractionReply.reply(event, reply -> {
|
||||
.setComponents(ActionRow.of(config.getRoles().values().stream().map(DiscordConfig.DiscordRole::toButton).toArray(Button[]::new))), event -> InteractionReply.reply(event, reply -> {
|
||||
Member member = event.getMember();
|
||||
Guild guild = event.getGuild();
|
||||
Role role = guild.getRoleById(event.getComponentId());
|
||||
@@ -124,33 +122,33 @@ public class DiscordBot {
|
||||
reply.system("DC_ROLE_ADDED", role.getAsMention());
|
||||
}
|
||||
}));
|
||||
new StaticMessageChannel(config.channel("rules"), () -> new MessageBuilder()
|
||||
new StaticMessageChannel(config.channel("rules"), () -> new MessageCreateBuilder()
|
||||
.setEmbeds(new EmbedBuilder()
|
||||
.setDescription(String.join("\n", config.getRules()))
|
||||
.setColor(Color.GRAY)
|
||||
.setAuthor("SteamWar", "https://steamwar.de")
|
||||
.setTitle("Regeln und Infos")
|
||||
.build())
|
||||
.setActionRows(
|
||||
.setComponents(
|
||||
ActionRow.of(Button.link("https://steamwar.de", "Website"), Button.link("https://steamwar.de/youtube", "YouTube")),
|
||||
ActionRow.of(Button.primary("auth", Emoji.fromUnicode("U+2705")).withLabel("Minecraft verknüpfen"))
|
||||
), event -> {
|
||||
if(event.getComponentId().equals("auth"))
|
||||
event.reply("Gebe innerhalb der nächsten 10 Minuten ``/verify " + AuthManager.createDiscordAuthToken(event.getUser()) + "`` auf dem Minecraft Server ein").setEphemeral(true).queue();
|
||||
});
|
||||
new StaticMessageChannel(config.channel("ticket"), () -> new MessageBuilder()
|
||||
new StaticMessageChannel(config.channel("ticket"), () -> new MessageCreateBuilder()
|
||||
.setEmbeds(new EmbedBuilder()
|
||||
.setDescription("Hier kannst du Tickets öffnen, welche nur von dir und Teammitgliedern eingesehen werden können.")
|
||||
.setTitle("SteamWar Tickets")
|
||||
.setColor(Color.RED)
|
||||
.build())
|
||||
.setActionRows(ActionRow.of(Arrays.stream(DiscordTicketType.values()).map(DiscordTicketType::toButton).toArray(Button[]::new))), DiscordTicketHandler::openTicket);
|
||||
.setComponents(ActionRow.of(Arrays.stream(DiscordTicketType.values()).map(DiscordTicketType::toButton).toArray(Button[]::new))), DiscordTicketHandler::openTicket);
|
||||
eventChannel = new StaticMessageChannel(config.channel("events"), EventChannel::get);
|
||||
checklistChannel = new ChecklistChannel(config.channel("checklist"));
|
||||
|
||||
announcementChannel = new DiscordChannel(config.channel("announcement")) {
|
||||
@Override
|
||||
public void received(GuildMessageReceivedEvent event) {
|
||||
public void received(MessageReceivedEvent event) {
|
||||
Chatter.broadcast().system("ALERT", event.getMessage().getContentDisplay());
|
||||
}
|
||||
};
|
||||
@@ -198,7 +196,7 @@ public class DiscordBot {
|
||||
.keySet().stream()
|
||||
.filter(command -> !correctCommands.contains(command))
|
||||
.filter(command -> command.matches("^[\\w-]+$"))
|
||||
.map(command -> new CommandData(command, command).addOptions(commandArgument))
|
||||
.map(command -> Commands.slash(command, command).addOptions(commandArgument))
|
||||
.toArray(CommandData[]::new))
|
||||
.queue();
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ import de.steamwar.velocitycore.Config;
|
||||
import de.steamwar.velocitycore.VelocityCore;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import net.dv8tion.jda.api.entities.Emoji;
|
||||
import net.dv8tion.jda.api.interactions.components.Button;
|
||||
import net.dv8tion.jda.api.interactions.components.ButtonStyle;
|
||||
import net.dv8tion.jda.api.entities.emoji.Emoji;
|
||||
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
||||
import net.dv8tion.jda.api.interactions.components.buttons.ButtonStyle;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
package de.steamwar.velocitycore.discord;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import net.dv8tion.jda.api.entities.Emoji;
|
||||
import net.dv8tion.jda.api.interactions.components.Button;
|
||||
import net.dv8tion.jda.api.interactions.components.ButtonStyle;
|
||||
import net.dv8tion.jda.api.entities.emoji.Emoji;
|
||||
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
||||
import net.dv8tion.jda.api.interactions.components.buttons.ButtonStyle;
|
||||
|
||||
@AllArgsConstructor
|
||||
public enum DiscordTicketType {
|
||||
|
||||
@@ -26,11 +26,12 @@ import de.steamwar.messages.Message;
|
||||
import de.steamwar.sql.SteamwarUser;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import net.dv8tion.jda.api.MessageBuilder;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.events.interaction.GenericComponentInteractionCreateEvent;
|
||||
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
|
||||
import net.dv8tion.jda.api.events.interaction.component.GenericComponentInteractionCreateEvent;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
|
||||
@@ -57,19 +58,19 @@ public class DiscordChannel extends Chatter.PlayerlessChatter {
|
||||
}
|
||||
|
||||
public void send(String message) {
|
||||
send(new MessageBuilder()
|
||||
.append(message
|
||||
send(new MessageCreateBuilder()
|
||||
.setContent(message
|
||||
.replace("&", "")
|
||||
.replace("@everyone", "`@everyone`")
|
||||
.replace("@here", "`@here`")
|
||||
.replaceAll("<[@#]!?\\d+>", "`$0`")));
|
||||
}
|
||||
|
||||
public void send(MessageBuilder builder) {
|
||||
public void send(MessageCreateBuilder builder) {
|
||||
channel.sendMessage(builder.build()).queue();
|
||||
}
|
||||
|
||||
public void received(GuildMessageReceivedEvent event) {
|
||||
public void received(MessageReceivedEvent event) {
|
||||
event.getMessage().delete().queue();
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import de.steamwar.messages.Chatter;
|
||||
import de.steamwar.messages.ChatterGroup;
|
||||
import de.steamwar.sql.Punishment;
|
||||
import de.steamwar.sql.SteamwarUser;
|
||||
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@@ -40,7 +40,7 @@ public class DiscordChatRoom extends DiscordChannel {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(GuildMessageReceivedEvent event) {
|
||||
public void received(MessageReceivedEvent event) {
|
||||
SteamwarUser user = SteamwarUser.get(event.getAuthor().getIdLong());
|
||||
if (user == null || event.getMessage().getContentRaw().length() > 250 || user.isPunished(Punishment.PunishmentType.Ban) || user.isPunished(Punishment.PunishmentType.Mute)) {
|
||||
event.getMessage().delete().queue();
|
||||
|
||||
@@ -25,10 +25,10 @@ import de.steamwar.sql.Team;
|
||||
import de.steamwar.sql.TeamTeilnahme;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.MessageBuilder;
|
||||
import net.dv8tion.jda.api.entities.Emoji;
|
||||
import net.dv8tion.jda.api.entities.emoji.Emoji;
|
||||
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||
import net.dv8tion.jda.api.interactions.components.selections.SelectionMenu;
|
||||
import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
|
||||
|
||||
import java.awt.*;
|
||||
import java.sql.Timestamp;
|
||||
@@ -40,21 +40,21 @@ import java.util.stream.Collectors;
|
||||
@UtilityClass
|
||||
public class EventChannel {
|
||||
|
||||
public MessageBuilder get() {
|
||||
public MessageCreateBuilder get() {
|
||||
if (Event.get() == null)
|
||||
return updateComing();
|
||||
|
||||
return updateCurrent();
|
||||
}
|
||||
|
||||
private MessageBuilder updateComing() {
|
||||
private MessageCreateBuilder updateComing() {
|
||||
EmbedBuilder embedBuilder = new EmbedBuilder()
|
||||
.setColor(Color.GRAY)
|
||||
.setTitle("Zukünftige Events")
|
||||
.setAuthor("SteamWar", "https://www.steamwar.de");
|
||||
|
||||
|
||||
SelectionMenu.Builder menuBuilder = SelectionMenu.create("eventName")
|
||||
StringSelectMenu.Builder menuBuilder = StringSelectMenu.create("eventName")
|
||||
.setPlaceholder("Wähle ein Event aus!")
|
||||
.setMinValues(1)
|
||||
.setMaxValues(1);
|
||||
@@ -77,16 +77,16 @@ public class EventChannel {
|
||||
}
|
||||
});
|
||||
|
||||
MessageBuilder messageBuilder = new MessageBuilder()
|
||||
MessageCreateBuilder messageBuilder = new MessageCreateBuilder()
|
||||
.setEmbeds(embedBuilder.build());
|
||||
|
||||
if(events.stream().anyMatch(event -> event.getDeadline().after(Timestamp.from(Instant.now())))) {
|
||||
messageBuilder.setActionRows(ActionRow.of(menuBuilder.build()));
|
||||
messageBuilder.setComponents(ActionRow.of(menuBuilder.build()));
|
||||
}
|
||||
return messageBuilder;
|
||||
}
|
||||
|
||||
private MessageBuilder updateCurrent() {
|
||||
private MessageCreateBuilder updateCurrent() {
|
||||
Event event = Event.get();
|
||||
EmbedBuilder embedBuilder = new EmbedBuilder()
|
||||
.setColor(Color.GRAY)
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
|
||||
package de.steamwar.velocitycore.discord.channels;
|
||||
|
||||
import net.dv8tion.jda.api.interactions.Interaction;
|
||||
import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback;
|
||||
import net.dv8tion.jda.api.interactions.components.ComponentInteraction;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
|
||||
@@ -29,18 +30,18 @@ import java.util.function.Consumer;
|
||||
|
||||
public class InteractionReply extends DiscordChannel {
|
||||
|
||||
public static void reply(Interaction interaction, Consumer<InteractionReply> consumer) {
|
||||
public static void reply(IReplyCallback interaction, Consumer<InteractionReply> consumer) {
|
||||
InteractionReply reply = new InteractionReply(interaction);
|
||||
consumer.accept(reply);
|
||||
reply.submit();
|
||||
}
|
||||
|
||||
private final Interaction interaction;
|
||||
private final IReplyCallback interaction;
|
||||
|
||||
private boolean replied = false;
|
||||
private final List<String> messages = new ArrayList<>();
|
||||
|
||||
private InteractionReply(Interaction interaction) {
|
||||
private InteractionReply(IReplyCallback interaction) {
|
||||
super(interaction.getUser());
|
||||
this.interaction = interaction;
|
||||
}
|
||||
|
||||
+10
-9
@@ -20,35 +20,36 @@
|
||||
package de.steamwar.velocitycore.discord.channels;
|
||||
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.MessageBuilder;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.events.interaction.GenericComponentInteractionCreateEvent;
|
||||
import net.dv8tion.jda.api.events.interaction.component.GenericComponentInteractionCreateEvent;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageEditData;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class StaticMessageChannel extends DiscordChannel {
|
||||
|
||||
public static MessageBuilder toMessageBuilder(EmbedBuilder embedBuilder) {
|
||||
MessageBuilder messageBuilder = new MessageBuilder();
|
||||
public static MessageCreateBuilder toMessageBuilder(EmbedBuilder embedBuilder) {
|
||||
MessageCreateBuilder messageBuilder = new MessageCreateBuilder();
|
||||
messageBuilder.setEmbeds(embedBuilder.build());
|
||||
return messageBuilder;
|
||||
}
|
||||
|
||||
private Message message;
|
||||
private final Supplier<MessageBuilder> supplier;
|
||||
private final Supplier<MessageCreateBuilder> supplier;
|
||||
private final Consumer<GenericComponentInteractionCreateEvent> interaction;
|
||||
|
||||
public StaticMessageChannel(String channel, Supplier<MessageBuilder> supplier) {
|
||||
public StaticMessageChannel(String channel, Supplier<MessageCreateBuilder> supplier) {
|
||||
this(channel, supplier, event -> {});
|
||||
}
|
||||
|
||||
public StaticMessageChannel(String channel, Supplier<MessageBuilder> supplier, Consumer<GenericComponentInteractionCreateEvent> interaction) {
|
||||
public StaticMessageChannel(String channel, Supplier<MessageCreateBuilder> supplier, Consumer<GenericComponentInteractionCreateEvent> interaction) {
|
||||
super(channel);
|
||||
this.supplier = supplier;
|
||||
this.interaction = interaction;
|
||||
|
||||
if(getChannel().hasLatestMessage())
|
||||
if(getChannel().getLatestMessageIdLong() != 0)
|
||||
message = getChannel().getIterableHistory().complete().stream().filter(m -> m.getAuthor().isBot()).findFirst().orElse(null);
|
||||
|
||||
update();
|
||||
@@ -58,7 +59,7 @@ public class StaticMessageChannel extends DiscordChannel {
|
||||
if (message == null) {
|
||||
getChannel().sendMessage(supplier.get().build()).queue(m -> message = m);
|
||||
} else {
|
||||
message.editMessage(supplier.get().build()).queue();
|
||||
message.editMessage(MessageEditData.fromCreateData(supplier.get().build())).queue();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,11 +25,11 @@ import de.steamwar.velocitycore.discord.DiscordBot;
|
||||
import de.steamwar.velocitycore.discord.channels.DiscordChannel;
|
||||
import de.steamwar.velocitycore.discord.channels.InteractionReply;
|
||||
import lombok.Getter;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.events.interaction.GenericComponentInteractionCreateEvent;
|
||||
import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
|
||||
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.entities.channel.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
import net.dv8tion.jda.api.events.interaction.component.GenericComponentInteractionCreateEvent;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import net.dv8tion.jda.api.interactions.InteractionType;
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
|
||||
@@ -44,7 +44,7 @@ public class ChannelListener extends ListenerAdapter {
|
||||
private static final Map<MessageChannel, DiscordChannel> channels = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void onGuildMessageReceived(@NotNull GuildMessageReceivedEvent event) {
|
||||
public void onMessageReceived(@NotNull MessageReceivedEvent event) {
|
||||
if(event.getAuthor().isBot())
|
||||
return;
|
||||
|
||||
@@ -69,7 +69,7 @@ public class ChannelListener extends ListenerAdapter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSlashCommand(@NotNull SlashCommandEvent event) {
|
||||
public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent event) {
|
||||
InteractionReply.reply(event, sender -> {
|
||||
if(sender.user().getDiscordId() == null)
|
||||
return;
|
||||
|
||||
@@ -26,7 +26,7 @@ import de.steamwar.sql.Punishment;
|
||||
import de.steamwar.sql.SchematicNode;
|
||||
import de.steamwar.sql.SteamwarUser;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -41,7 +41,9 @@ public class DiscordSchemUpload extends ListenerAdapter {
|
||||
private static final List<String> SCHEM_FILE_ENDINGS = Arrays.asList(".schem", ".schematic");
|
||||
|
||||
@Override
|
||||
public void onPrivateMessageReceived(PrivateMessageReceivedEvent event) {
|
||||
public void onMessageReceived(MessageReceivedEvent event) {
|
||||
if (event.isFromGuild()) return;
|
||||
|
||||
Message message = event.getMessage();
|
||||
if(message.getAttachments().isEmpty())
|
||||
return;
|
||||
@@ -76,7 +78,7 @@ public class DiscordSchemUpload extends ListenerAdapter {
|
||||
if(node == null)
|
||||
node = SchematicNode.createSchematic(user.getId(), name, null);
|
||||
|
||||
try (InputStream in = attachment.retrieveInputStream().get()) {
|
||||
try (InputStream in = attachment.getProxy().download().get()) {
|
||||
NodeData.get(node).saveFromStream(in, fileName.substring(dot).equalsIgnoreCase(".schem"));
|
||||
sender.system("DC_SCHEMUPLOAD_SUCCESS", name);
|
||||
} catch (InterruptedException e) {
|
||||
|
||||
@@ -23,7 +23,7 @@ import de.steamwar.velocitycore.VelocityCore;
|
||||
import de.steamwar.velocitycore.discord.DiscordBot;
|
||||
import de.steamwar.velocitycore.discord.channels.InteractionReply;
|
||||
import de.steamwar.sql.Event;
|
||||
import net.dv8tion.jda.api.events.interaction.SelectionMenuEvent;
|
||||
import net.dv8tion.jda.api.events.interaction.component.StringSelectInteractionEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -32,7 +32,7 @@ public class DiscordTeamEvent extends ListenerAdapter {
|
||||
private final String eventsChannel = DiscordBot.getInstance().getConfig().channel("events");
|
||||
|
||||
@Override
|
||||
public void onSelectionMenu(@NotNull SelectionMenuEvent event) {
|
||||
public void onStringSelectInteraction(@NotNull StringSelectInteractionEvent event) {
|
||||
if(!event.getChannel().getId().equals(eventsChannel))
|
||||
return;
|
||||
|
||||
|
||||
+26
-34
@@ -29,17 +29,18 @@ import de.steamwar.velocitycore.discord.DiscordTicketType;
|
||||
import de.steamwar.velocitycore.discord.channels.DiscordChannel;
|
||||
import de.steamwar.velocitycore.discord.channels.InteractionReply;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.MessageBuilder;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.Emoji;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.events.interaction.GenericComponentInteractionCreateEvent;
|
||||
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
|
||||
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.emoji.Emoji;
|
||||
import net.dv8tion.jda.api.events.interaction.component.GenericComponentInteractionCreateEvent;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||
import net.dv8tion.jda.api.interactions.components.Button;
|
||||
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
||||
import net.dv8tion.jda.api.utils.SplitUtil;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
|
||||
import net.kyori.adventure.text.event.ClickEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -59,24 +60,23 @@ public class DiscordTicketHandler extends ListenerAdapter {
|
||||
SteamwarUser user = SteamwarUser.get(event.getUser().getIdLong());
|
||||
|
||||
TextChannel ticketChannel = event.getGuild().getCategoryById(TICKET_CATEGORY).createTextChannel((user == null ? event.getUser().getName() : user.getUserName()) + "-" + event.getComponentId() + "-" + System.currentTimeMillis() % 1000).complete();
|
||||
ticketChannel.createPermissionOverride(event.getMember()).setAllow(
|
||||
ticketChannel.getPermissionContainer().upsertPermissionOverride(event.getMember()).setAllowed(
|
||||
Permission.VIEW_CHANNEL,
|
||||
Permission.MESSAGE_WRITE,
|
||||
Permission.MESSAGE_SEND,
|
||||
Permission.MESSAGE_ATTACH_FILES,
|
||||
Permission.MESSAGE_ADD_REACTION,
|
||||
Permission.MESSAGE_READ,
|
||||
Permission.MESSAGE_EMBED_LINKS,
|
||||
Permission.MESSAGE_HISTORY).complete();
|
||||
ticketChannel.getManager().setTopic(event.getUser().getId()).complete();
|
||||
|
||||
DiscordChannel channel = new DiscordChannel(DiscordChannel.userOrPublic(event.getUser()), ticketChannel);
|
||||
channel.send(new MessageBuilder()
|
||||
channel.send(new MessageCreateBuilder()
|
||||
.setEmbeds(new EmbedBuilder()
|
||||
.setTitle(channel.parseToPlain("DC_TICKET_TITLE"))
|
||||
.setDescription(channel.parseToPlain(ticketType.introduction()))
|
||||
.setColor(Color.GREEN)
|
||||
.build())
|
||||
.setActionRows(ActionRow.of(Button.danger("close-" + ticketChannel.getName(), channel.parseToPlain("DC_TICKET_CLOSE")).withEmoji(Emoji.fromUnicode("U+26A0")))));
|
||||
.setComponents(ActionRow.of(Button.danger("close-" + ticketChannel.getName(), channel.parseToPlain("DC_TICKET_CLOSE")).withEmoji(Emoji.fromUnicode("U+26A0")))));
|
||||
|
||||
InteractionReply.reply(event, reply -> reply.system("DC_TICKET_CREATED", ticketChannel.getAsMention()));
|
||||
Chatter.serverteam().prefixless("DISCORD_TICKET_NEW", ticketChannel.getName());
|
||||
@@ -85,7 +85,7 @@ public class DiscordTicketHandler extends ListenerAdapter {
|
||||
@Override
|
||||
public void onGenericComponentInteractionCreate(@NotNull GenericComponentInteractionCreateEvent event) {
|
||||
MessageChannel messageChannel = event.getChannel();
|
||||
if(messageChannel instanceof TextChannel channel && channel.getParent() != null && channel.getParent().getId().equals(TICKET_CATEGORY) && event.getComponentId().startsWith("close-")) {
|
||||
if(messageChannel instanceof TextChannel channel && channel.getParentCategoryIdLong() != 0 && channel.getParentCategoryId().equals(TICKET_CATEGORY) && event.getComponentId().startsWith("close-")) {
|
||||
LinkedList<StringBuilder> messages = channel.getIterableHistory().complete().stream()
|
||||
.filter(message -> !message.getAuthor().isSystem() && !message.getAuthor().isBot())
|
||||
.map(message -> {
|
||||
@@ -106,24 +106,10 @@ public class DiscordTicketHandler extends ListenerAdapter {
|
||||
|
||||
messages.addFirst(new StringBuilder().append("<t:").append(Instant.now().getEpochSecond()).append("> **").append(event.getUser().getName()).append("**: Ticket closed"));
|
||||
|
||||
LinkedList<StringBuilder> messageBuilders = new LinkedList<>();
|
||||
messageBuilders.add(new StringBuilder());
|
||||
messages.descendingIterator()
|
||||
.forEachRemaining(stringBuilder -> {
|
||||
if(stringBuilder.length() >= 4096) {
|
||||
messageBuilders.getLast().append(stringBuilder.substring(0, 4090));
|
||||
messageBuilders.add(new StringBuilder(stringBuilder.substring(4090, stringBuilder.length() - 1)));
|
||||
} else if (stringBuilder.length() + messageBuilders.getLast().length() >= 4096) {
|
||||
messageBuilders.add(new StringBuilder(stringBuilder.toString()));
|
||||
} else {
|
||||
messageBuilders.getLast().append(stringBuilder);
|
||||
}
|
||||
});
|
||||
|
||||
EmbedBuilder embedBuilder = new EmbedBuilder()
|
||||
.setColor(Color.GREEN)
|
||||
.setTimestamp(Instant.now())
|
||||
.setTitle(event.getTextChannel().getName());
|
||||
.setTitle(event.getChannel().getName());
|
||||
|
||||
if(channel.getTopic() != null && !channel.getTopic().isEmpty()) {
|
||||
User user = event.getJDA().retrieveUserById(channel.getTopic()).complete();
|
||||
@@ -131,7 +117,12 @@ public class DiscordTicketHandler extends ListenerAdapter {
|
||||
}
|
||||
|
||||
TextChannel logChannel = event.getGuild().getTextChannelById(TICKET_LOG);
|
||||
messageBuilders.forEach(stringBuilder -> logChannel.sendMessage(new MessageBuilder().setEmbeds(embedBuilder.setDescription(stringBuilder.toString()).build()).build()).queue());
|
||||
SplitUtil.split(
|
||||
messages.stream().map(StringBuilder::toString).collect(Collectors.joining("\n")),
|
||||
2000,
|
||||
SplitUtil.Strategy.NEWLINE,
|
||||
SplitUtil.Strategy.ANYWHERE
|
||||
).stream().map(message -> new MessageCreateBuilder().setEmbeds(embedBuilder.setDescription(message).build())).forEach(builder -> logChannel.sendMessage(builder.build()).queue());
|
||||
|
||||
Chatter.serverteam().prefixless("DISCORD_TICKET_CLOSED", channel.getName());
|
||||
channel.delete().reason("Closed").queue();
|
||||
@@ -139,11 +130,12 @@ public class DiscordTicketHandler extends ListenerAdapter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuildMessageReceived(@NotNull GuildMessageReceivedEvent event) {
|
||||
TextChannel channel = event.getChannel();
|
||||
public void onMessageReceived(@NotNull MessageReceivedEvent event) {
|
||||
MessageChannel channel = event.getChannel();
|
||||
if(
|
||||
channel.getParent() != null &&
|
||||
channel.getParent().getId().equals(TICKET_CATEGORY) &&
|
||||
channel instanceof TextChannel textChannel &&
|
||||
textChannel.getParentCategoryIdLong() != 0 &&
|
||||
textChannel.getParentCategoryId().equals(TICKET_CATEGORY) &&
|
||||
!channel.getId().equals(TICKET_CHANNEL) &&
|
||||
!channel.getId().equals(TICKET_LOG)
|
||||
) {
|
||||
@@ -152,7 +144,7 @@ public class DiscordTicketHandler extends ListenerAdapter {
|
||||
|
||||
ChatterGroup receivers = new ChatterGroup(Chatter.allStream().filter(player -> player.user().hasPerm(UserPerm.TICKET_LOG)));
|
||||
try {
|
||||
SteamwarUser user = SteamwarUser.get(Long.parseLong(channel.getTopic()));
|
||||
SteamwarUser user = SteamwarUser.get(Long.parseLong(textChannel.getTopic()));
|
||||
if(user != null && !user.perms().contains(UserPerm.TEAM))
|
||||
receivers = new ChatterGroup(receivers, Chatter.of(user));
|
||||
} catch(NumberFormatException e) {
|
||||
|
||||
@@ -23,11 +23,11 @@ import de.steamwar.velocitycore.VelocityCore;
|
||||
import de.steamwar.velocitycore.discord.channels.DiscordChannel;
|
||||
import de.steamwar.sql.SteamwarUser;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import net.dv8tion.jda.api.MessageBuilder;
|
||||
import net.dv8tion.jda.api.entities.Emoji;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.entities.emoji.Emoji;
|
||||
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||
import net.dv8tion.jda.api.interactions.components.Button;
|
||||
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
|
||||
|
||||
import java.util.Base64;
|
||||
import java.util.HashMap;
|
||||
@@ -63,9 +63,9 @@ public class AuthManager {
|
||||
user.setDiscordId(dcUser.getIdLong());
|
||||
|
||||
DiscordChannel channel = new DiscordChannel(dcUser);
|
||||
channel.send(new MessageBuilder()
|
||||
channel.send(new MessageCreateBuilder()
|
||||
.setContent(channel.parseToPlain("DC_AUTH_SUCCESS", user))
|
||||
.setActionRows(ActionRow.of(Button.success("tada", Emoji.fromUnicode("U+1F389")))));
|
||||
.setComponents(ActionRow.of(Button.success("tada", Emoji.fromUnicode("U+1F389")))));
|
||||
|
||||
return dcUser;
|
||||
}
|
||||
|
||||
@@ -25,11 +25,11 @@ import de.steamwar.velocitycore.discord.DiscordBot;
|
||||
import de.steamwar.velocitycore.discord.channels.DiscordChannel;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.MessageBuilder;
|
||||
import net.dv8tion.jda.api.entities.Emoji;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.entities.emoji.Emoji;
|
||||
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||
import net.dv8tion.jda.api.interactions.components.Button;
|
||||
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
|
||||
|
||||
import java.awt.*;
|
||||
import java.time.Instant;
|
||||
@@ -47,7 +47,7 @@ public class DiscordAlert {
|
||||
if(user == null)
|
||||
return;
|
||||
|
||||
MessageBuilder builder = new MessageBuilder()
|
||||
MessageCreateBuilder builder = new MessageCreateBuilder()
|
||||
.setEmbeds(new EmbedBuilder()
|
||||
.setAuthor("SteamWar", "https://steamwar.de", "https://cdn.discordapp.com/app-icons/869606970099904562/60c884000407c02671d91d8e7182b8a1.png")
|
||||
.setColor(color)
|
||||
@@ -56,7 +56,7 @@ public class DiscordAlert {
|
||||
.setTimestamp(Instant.now())
|
||||
.build());
|
||||
if(success)
|
||||
builder.setActionRows(ActionRow.of(Button.success("tada", Emoji.fromUnicode("U+1F389"))));
|
||||
builder.setComponents(ActionRow.of(Button.success("tada", Emoji.fromUnicode("U+1F389"))));
|
||||
|
||||
new DiscordChannel(user).send(builder);
|
||||
});
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ dependencyResolutionManagement {
|
||||
library("netty", "io.netty:netty-all:4.1.68.Final")
|
||||
library("junit", "junit:junit:4.13.2")
|
||||
library("hamcrest", "org.hamcrest:hamcrest:2.2")
|
||||
library("jda", "net.dv8tion:JDA:4.4.0_352")
|
||||
library("jda", "net.dv8tion:JDA:5.0.2")
|
||||
library("msgpack", "org.msgpack:msgpack-core:0.9.8")
|
||||
library("classindex", "org.atteo.classindex:classindex:3.13")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user