mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-14 21:22:09 +00:00
Add DiscordService#sendChatMessage
Allows plugins to send messages to the chat channel via API using the format from our config
This commit is contained in:
parent
3da8efae49
commit
3f9aceb922
3 changed files with 34 additions and 13 deletions
|
@ -1,5 +1,7 @@
|
|||
package net.essentialsx.api.v2.services.discord;
|
||||
|
||||
import net.essentialsx.api.v2.events.discord.DiscordChatMessageEvent;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
/**
|
||||
|
@ -14,6 +16,16 @@ public interface DiscordService {
|
|||
*/
|
||||
void sendMessage(final MessageType type, final String message, final boolean allowGroupMentions);
|
||||
|
||||
/**
|
||||
* Sends a chat messages to the {@link MessageType.DefaultTypes#CHAT default chat channel} with the same format
|
||||
* used for regular chat messages specified in the EssentialsX Discord configuration.
|
||||
* <p>
|
||||
* Note: Messages sent with this method will not fire a {@link DiscordChatMessageEvent}.
|
||||
* @param player The player who send the message.
|
||||
* @param chatMessage The chat message the player has sent.
|
||||
*/
|
||||
void sendChatMessage(final Player player, final String chatMessage);
|
||||
|
||||
/**
|
||||
* Checks if a {@link MessageType} by the given key is already registered.
|
||||
* @param key The {@link MessageType} key to check.
|
||||
|
|
|
@ -4,6 +4,7 @@ import club.minnced.discord.webhook.WebhookClient;
|
|||
import club.minnced.discord.webhook.WebhookClientBuilder;
|
||||
import club.minnced.discord.webhook.send.WebhookMessage;
|
||||
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.FormatUtil;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
|
@ -31,8 +32,10 @@ import net.essentialsx.discord.listeners.DiscordCommandDispatcher;
|
|||
import net.essentialsx.discord.listeners.DiscordListener;
|
||||
import net.essentialsx.discord.util.ConsoleInjector;
|
||||
import net.essentialsx.discord.util.DiscordUtil;
|
||||
import net.essentialsx.discord.util.MessageUtil;
|
||||
import org.apache.commons.lang.math.NumberUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.ServicePriority;
|
||||
|
@ -237,6 +240,24 @@ public class JDADiscordService implements DiscordService {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendChatMessage(final Player player, final String chatMessage) {
|
||||
final User user = getPlugin().getEss().getUser(player);
|
||||
|
||||
final String formattedMessage = MessageUtil.formatMessage(getSettings().getMcToDiscordFormat(player),
|
||||
MessageUtil.sanitizeDiscordMarkdown(player.getName()),
|
||||
MessageUtil.sanitizeDiscordMarkdown(player.getDisplayName()),
|
||||
user.isAuthorized("essentials.discord.markdown") ? chatMessage : MessageUtil.sanitizeDiscordMarkdown(chatMessage),
|
||||
MessageUtil.sanitizeDiscordMarkdown(player.getWorld().getName()),
|
||||
MessageUtil.sanitizeDiscordMarkdown(FormatUtil.stripEssentialsFormat(getPlugin().getEss().getPermissionsHandler().getPrefix(player))),
|
||||
MessageUtil.sanitizeDiscordMarkdown(FormatUtil.stripEssentialsFormat(getPlugin().getEss().getPermissionsHandler().getSuffix(player))));
|
||||
|
||||
final String avatarUrl = getSettings().isShowAvatar() ? getSettings().getAvatarURL().replace("{uuid}", player.getUniqueId().toString()) : null;
|
||||
final String name = getSettings().isShowName() ? player.getName() : (getSettings().isShowDisplayName() ? player.getDisplayName() : null);
|
||||
|
||||
DiscordUtil.dispatchDiscordMessage(this, MessageType.DefaultTypes.CHAT, formattedMessage, user.isAuthorized("essentials.discord.ping"), avatarUrl, name, player.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionController getInteractionController() {
|
||||
return interactionController;
|
||||
|
|
|
@ -2,7 +2,6 @@ package net.essentialsx.discord.listeners;
|
|||
|
||||
import com.earth2me.essentials.Console;
|
||||
import com.earth2me.essentials.utils.DateUtil;
|
||||
import com.earth2me.essentials.utils.FormatUtil;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.api.events.AfkStatusChangeEvent;
|
||||
|
@ -91,18 +90,7 @@ public class BukkitListener implements Listener {
|
|||
return;
|
||||
}
|
||||
|
||||
sendDiscordMessage(MessageType.DefaultTypes.CHAT,
|
||||
MessageUtil.formatMessage(jda.getSettings().getMcToDiscordFormat(player),
|
||||
MessageUtil.sanitizeDiscordMarkdown(player.getName()),
|
||||
MessageUtil.sanitizeDiscordMarkdown(player.getDisplayName()),
|
||||
player.hasPermission("essentials.discord.markdown") ? chatEvent.getMessage() : MessageUtil.sanitizeDiscordMarkdown(chatEvent.getMessage()),
|
||||
MessageUtil.sanitizeDiscordMarkdown(player.getWorld().getName()),
|
||||
MessageUtil.sanitizeDiscordMarkdown(FormatUtil.stripEssentialsFormat(jda.getPlugin().getEss().getPermissionsHandler().getPrefix(player))),
|
||||
MessageUtil.sanitizeDiscordMarkdown(FormatUtil.stripEssentialsFormat(jda.getPlugin().getEss().getPermissionsHandler().getSuffix(player)))),
|
||||
player.hasPermission("essentials.discord.ping"),
|
||||
jda.getSettings().isShowAvatar() ? jda.getSettings().getAvatarURL().replace("{uuid}", player.getUniqueId().toString()) : null,
|
||||
jda.getSettings().isShowName() ? player.getName() : (jda.getSettings().isShowDisplayName() ? player.getDisplayName() : null),
|
||||
player.getUniqueId());
|
||||
jda.sendChatMessage(player, chatEvent.getMessage());
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue