Improve DiscordChannel on discord!

This commit is contained in:
2025-04-04 10:49:01 +02:00
parent 13bd154383
commit dafe838a8a
@@ -26,10 +26,13 @@ import de.steamwar.velocitycore.discord.DiscordBot;
import de.steamwar.velocitycore.discord.listeners.ChannelListener;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.dv8tion.jda.api.entities.Icon;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
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.ImageProxy;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
@@ -61,12 +64,55 @@ public class DiscordChannel extends Chatter.PlayerlessChatter {
}
public void send(String message) {
message = message
.replace("&", "")
.replace("@everyone", "`@everyone`")
.replace("@here", "`@here`")
.replaceAll("<[@#]!?\\d+>", "`$0`");
if (getChannel() instanceof TextChannel && message.contains("»")) {
String[] strings = message.split("»", 2);
String userName = strings[0];
message = strings[1];
strings = userName.split(" ");
String ingameName = strings[strings.length - 1];
SteamwarUser user = SteamwarUser.get(ingameName);
if (user != null) {
send(new MessageCreateBuilder()
.setContent(message));
return;
}
ImageProxy avatarUrl;
if (user.getDiscordId() != null) {
avatarUrl = DiscordBot.getGuild().retrieveMemberById(user.getDiscordId()).complete().getEffectiveAvatar();
} else {
avatarUrl = DiscordBot.getInstance().getJda().getSelfUser().getAvatar();
}
TextChannel textChannel = (TextChannel) getChannel();
String finalMessage = message;
try {
textChannel.createWebhook(userName)
.setAvatar(Icon.from(avatarUrl.download(128).get()))
.onSuccess(webhook -> {
webhook.sendMessage(finalMessage)
.onSuccess(__ -> {
webhook.delete().queue();
})
.queue();
})
.queue();
return;
} catch (Exception e) {
// Ignore and send message as normal!
}
}
send(new MessageCreateBuilder()
.setContent(message
.replace("&", "")
.replace("@everyone", "`@everyone`")
.replace("@here", "`@here`")
.replaceAll("<[@#]!?\\d+>", "`$0`")));
.setContent(message));
}
public void send(MessageCreateBuilder builder) {