diff --git a/VelocityCore/src/de/steamwar/velocitycore/discord/channels/DiscordChannel.java b/VelocityCore/src/de/steamwar/velocitycore/discord/channels/DiscordChannel.java index b420f601..e1dc9912 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/discord/channels/DiscordChannel.java +++ b/VelocityCore/src/de/steamwar/velocitycore/discord/channels/DiscordChannel.java @@ -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) {