Channelcon chat works!
groupid, not args... that took a while to track down... Various fixes regarding channelcon Saving channel connections works Fromcmd fix for channel cmds Only allow game roles from the main server Game role fix Only allowing one connection per group for now
This commit is contained in:
parent
29683d4c0c
commit
e47f8abb05
6 changed files with 86 additions and 63 deletions
|
@ -46,7 +46,7 @@ public class ChromaBot {
|
|||
}
|
||||
|
||||
/**
|
||||
* Send a message to the chat channel and private chats.
|
||||
* Send a message to the chat channels and private chats.
|
||||
*
|
||||
* @param message
|
||||
* The message to send, duh
|
||||
|
@ -72,7 +72,7 @@ public class ChromaBot {
|
|||
}
|
||||
|
||||
/**
|
||||
* Send a fancy message to the chat channel. This will show a bold text with a colored line.
|
||||
* Send a fancy message to the chat channels. This will show a bold text with a colored line.
|
||||
*
|
||||
* @param message
|
||||
* The message to send, duh
|
||||
|
@ -85,7 +85,7 @@ public class ChromaBot {
|
|||
}
|
||||
|
||||
/**
|
||||
* Send a fancy message to the chat channel. This will show a bold text with a colored line.
|
||||
* Send a fancy message to the chat channels. This will show a bold text with a colored line.
|
||||
*
|
||||
* @param message
|
||||
* The message to send, duh
|
||||
|
@ -100,7 +100,7 @@ public class ChromaBot {
|
|||
}
|
||||
|
||||
/**
|
||||
* Send a fancy message to the chat channel. This will show a bold text with a colored line.
|
||||
* Send a fancy message to the chat channels. This will show a bold text with a colored line.
|
||||
*
|
||||
* @param message
|
||||
* The message to send, duh
|
||||
|
@ -117,7 +117,7 @@ public class ChromaBot {
|
|||
}
|
||||
|
||||
/**
|
||||
* Send a message to the chat channel. This will show a bold text with a colored line.
|
||||
* Send a message to the chat channels. This will show a bold text with a colored line.
|
||||
*
|
||||
* @param message
|
||||
* The message to send, duh
|
||||
|
|
|
@ -58,10 +58,8 @@ public final class DPUtils {
|
|||
*/
|
||||
@Nullable
|
||||
public static <T> T perform(IRequest<T> action) {
|
||||
System.out.println("performA");
|
||||
if (DiscordPlugin.SafeMode)
|
||||
return null;
|
||||
System.out.println("performB");
|
||||
if (Thread.currentThread() == DiscordPlugin.mainThread) // TODO: Ignore shutdown message <--
|
||||
// throw new RuntimeException("Tried to wait for a Discord request on the main thread. This could cause lag.");
|
||||
Bukkit.getLogger().warning("Waiting for a Discord request on the main thread!");
|
||||
|
|
|
@ -4,6 +4,7 @@ import buttondevteam.discordplugin.commands.DiscordCommandBase;
|
|||
import buttondevteam.discordplugin.listeners.*;
|
||||
import buttondevteam.discordplugin.mccommands.DiscordMCCommandBase;
|
||||
import buttondevteam.lib.TBMCCoreAPI;
|
||||
import buttondevteam.lib.chat.Channel;
|
||||
import buttondevteam.lib.chat.TBMCChatAPI;
|
||||
import buttondevteam.lib.player.ChromaGamerBase;
|
||||
import com.google.common.io.Files;
|
||||
|
@ -32,6 +33,7 @@ import java.awt.*;
|
|||
import java.io.File;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -132,12 +134,26 @@ public class DiscordPlugin extends JavaPlugin implements IListener<ReadyEvent> {
|
|||
task.cancel();
|
||||
if (!sent) {
|
||||
new ChromaBot(this).updatePlayerList();
|
||||
//Get all roles with the default color
|
||||
/*GameRoles = mainServer.getRoles().stream().filter(r -> {
|
||||
System.out.println(r.getName()+" - "+r.getColor().toString()+" "+r.getColor().getAlpha());
|
||||
return r.getColor().getAlpha() == 0;
|
||||
}).map(IRole::getName).collect(Collectors.toList()); //r=149,g=165,b=166*/
|
||||
GameRoles = mainServer.getRoles().stream().filter(this::isGameRole).map(IRole::getName).collect(Collectors.toList());
|
||||
|
||||
val chcons = getConfig().getConfigurationSection("chcons");
|
||||
if (chcons != null) {
|
||||
val chconkeys = chcons.getKeys(false);
|
||||
for (val chconkey : chconkeys) {
|
||||
val chcon = chcons.getConfigurationSection(chconkey);
|
||||
val mcch = Channel.getChannels().stream().filter(ch -> ch.ID.equals(chcon.getString("mcchid"))).findAny();
|
||||
val ch = dc.getChannelByID(chcon.getLong("chid"));
|
||||
val did = chcon.getLong("did");
|
||||
val dp = DiscordPlayer.getUser(Long.toString(did), DiscordPlayer.class);
|
||||
val user = dc.fetchUser(did);
|
||||
val dcp = new DiscordConnectedPlayer(user, ch, UUID.fromString(chcon.getString("mcuid")), chcon.getString("mcname"));
|
||||
val groupid = chcon.getString("groupid");
|
||||
if (!mcch.isPresent() || ch == null || user == null || groupid == null)
|
||||
continue;
|
||||
MCChatListener.addCustomChat(ch, groupid, mcch.get(), dp, user, dcp);
|
||||
}
|
||||
}
|
||||
|
||||
DiscordCommandBase.registerCommands();
|
||||
if (getConfig().getBoolean("serverup", false)) {
|
||||
ChromaBot.getInstance().sendMessage("", new EmbedBuilder().withColor(Color.YELLOW)
|
||||
|
@ -210,6 +226,8 @@ public class DiscordPlugin extends JavaPlugin implements IListener<ReadyEvent> {
|
|||
}
|
||||
|
||||
public boolean isGameRole(IRole r) {
|
||||
if (r.getGuild().getLongID() != mainServer.getLongID())
|
||||
return false; //Only allow on the main server
|
||||
val rc = new Color(149, 165, 166, 0);
|
||||
return r.getColor().equals(rc)
|
||||
&& r.getPosition() < mainServer.getRoleByID(234343495735836672L).getPosition(); //Below the ChromaBot role
|
||||
|
@ -223,16 +241,25 @@ public class DiscordPlugin extends JavaPlugin implements IListener<ReadyEvent> {
|
|||
@Override
|
||||
public void onDisable() {
|
||||
stop = true;
|
||||
System.out.println("X");
|
||||
for (val entry : MCChatListener.ConnectedSenders.entrySet())
|
||||
MCListener.callEventExcludingSome(new PlayerQuitEvent(entry.getValue(), ""));
|
||||
System.out.println("Y");
|
||||
getConfig().set("lastannouncementtime", lastannouncementtime);
|
||||
getConfig().set("lastseentime", lastseentime);
|
||||
getConfig().set("serverup", false);
|
||||
System.out.println("Z");
|
||||
|
||||
val chcons = MCChatListener.getCustomChats();
|
||||
val chconsc = getConfig().createSection("chcons");
|
||||
for (val chcon : chcons) {
|
||||
val chconc = chconsc.createSection(chcon.channel.getStringID());
|
||||
chconc.set("mcchid", chcon.mcchannel.ID);
|
||||
chconc.set("chid", chcon.channel.getLongID());
|
||||
chconc.set("did", chcon.user.getLongID());
|
||||
chconc.set("mcuid", chcon.dcp.getUniqueId().toString());
|
||||
chconc.set("mcname", chcon.dcp.getName());
|
||||
chconc.set("groupid", chcon.groupID);
|
||||
}
|
||||
|
||||
saveConfig();
|
||||
System.out.println("XX");
|
||||
MCChatListener.forAllMCChat(ch -> DiscordPlugin.sendMessageToChannelWait(ch, "",
|
||||
new EmbedBuilder().withColor(Restart ? Color.ORANGE : Color.RED)
|
||||
.withTitle(Restart ? "Server restarting" : "Server stopping")
|
||||
|
@ -245,19 +272,13 @@ public class DiscordPlugin extends JavaPlugin implements IListener<ReadyEvent> {
|
|||
+ "asked *politely* to leave the server for a bit.")
|
||||
: "")
|
||||
.build(), 5, TimeUnit.SECONDS));
|
||||
System.out.println("XY");
|
||||
ChromaBot.getInstance().updatePlayerList();
|
||||
try {
|
||||
System.out.println("XZ");
|
||||
SafeMode = true; // Stop interacting with Discord
|
||||
MCChatListener.stop();
|
||||
System.out.println("YX");
|
||||
ChromaBot.delete();
|
||||
System.out.println("YY");
|
||||
dc.changePresence(StatusType.IDLE, ActivityType.PLAYING, "Chromacraft"); //No longer using the same account for testing
|
||||
System.out.println("YZ");
|
||||
dc.logout();
|
||||
System.out.println("ZX");
|
||||
} catch (Exception e) {
|
||||
TBMCCoreAPI.SendException("An error occured while disabling DiscordPlugin!", e);
|
||||
}
|
||||
|
@ -346,12 +367,10 @@ public class DiscordPlugin extends JavaPlugin implements IListener<ReadyEvent> {
|
|||
}
|
||||
|
||||
public static IMessage sendMessageToChannelWait(IChannel channel, String message, EmbedObject embed) {
|
||||
System.out.println("lol");
|
||||
return sendMessageToChannel(channel, message, embed, true);
|
||||
}
|
||||
|
||||
public static IMessage sendMessageToChannelWait(IChannel channel, String message, EmbedObject embed, long timeout, TimeUnit unit) {
|
||||
System.out.println("lol!");
|
||||
return sendMessageToChannel(channel, message, embed, true, timeout, unit);
|
||||
}
|
||||
|
||||
|
@ -360,26 +379,19 @@ public class DiscordPlugin extends JavaPlugin implements IListener<ReadyEvent> {
|
|||
}
|
||||
|
||||
private static IMessage sendMessageToChannel(IChannel channel, String message, EmbedObject embed, boolean wait, long timeout, TimeUnit unit) {
|
||||
System.out.println("lolwut");
|
||||
if (message.length() > 1980) {
|
||||
System.out.println("wut");
|
||||
message = message.substring(0, 1980);
|
||||
Bukkit.getLogger()
|
||||
.warning("Message was too long to send to discord and got truncated. In " + channel.getName());
|
||||
System.out.println("wat");
|
||||
}
|
||||
System.out.println("wot");
|
||||
try {
|
||||
System.out.println("sendA");
|
||||
if (channel == chatchannel)
|
||||
MCChatListener.resetLastMessage(); // If this is a chat message, it'll be set again
|
||||
else if (channel.isPrivate())
|
||||
MCChatListener.resetLastMessage(channel);
|
||||
System.out.println("sendB");
|
||||
final String content = message;
|
||||
RequestBuffer.IRequest<IMessage> r = () -> embed == null ? channel.sendMessage(content)
|
||||
: channel.sendMessage(content, embed, false);
|
||||
System.out.println("sendC");
|
||||
if (wait) {
|
||||
if (unit != null)
|
||||
return DPUtils.perform(r, timeout, unit);
|
||||
|
|
|
@ -28,7 +28,6 @@ public class ChannelconCommand extends DiscordCommandBase {
|
|||
message.reply("you need to have manage permissions for this channel!");
|
||||
return true;
|
||||
}
|
||||
//TODO: What if they no longer have permission to view the channel - check on some message events and startup - if somebody who can view the channel (on both platforms) has their accounts connected, keep it
|
||||
if (MCChatListener.hasCustomChat(message.getChannel())) {
|
||||
if (args.equalsIgnoreCase("remove")) {
|
||||
if (MCChatListener.removeCustomChat(message.getChannel()))
|
||||
|
@ -51,14 +50,19 @@ public class ChannelconCommand extends DiscordCommandBase {
|
|||
message.reply("you need to connect your Minecraft account. On our server in #bot do /connect <MCname>");
|
||||
return true;
|
||||
}
|
||||
val ev = new TBMCChannelConnectFakeEvent(new DiscordConnectedPlayer(message.getAuthor(), message.getChannel(), chp.getUUID(), Bukkit.getOfflinePlayer(chp.getUUID()).getName()), chan.get());
|
||||
DiscordConnectedPlayer dcp = new DiscordConnectedPlayer(message.getAuthor(), message.getChannel(), chp.getUUID(), Bukkit.getOfflinePlayer(chp.getUUID()).getName());
|
||||
val ev = new TBMCChannelConnectFakeEvent(dcp, chan.get());
|
||||
//Using a fake player with no login/logout, should be fine for this event
|
||||
String groupid = ev.getGroupID(ev.getSender()); //We're not trying to send in a specific group, we want to know which group the user belongs to (so not getGroupID())
|
||||
if (groupid == null) {
|
||||
message.reply("sorry, that didn't work. You cannot use that Minecraft channel.");
|
||||
return true;
|
||||
}
|
||||
MCChatListener.addCustomChat(message.getChannel(), args, ev.getChannel(), dp, message.getAuthor()); //TODO: SAVE
|
||||
if (MCChatListener.getCustomChats().stream().anyMatch(cc -> cc.groupID.equals(groupid) && cc.mcchannel.ID.equals(chan.get().ID))) {
|
||||
message.reply("sorry, this MC chat is already connected to a different channel, multiple channels are not supported atm.");
|
||||
return true;
|
||||
}
|
||||
MCChatListener.addCustomChat(message.getChannel(), groupid, ev.getChannel(), dp, message.getAuthor(), dcp);
|
||||
message.reply("alright, connection made to group `" + groupid + "`!");
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -131,7 +131,7 @@ public class CommandListener {
|
|||
}
|
||||
}, (IListener<RoleCreateEvent>) event -> {
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(DiscordPlugin.plugin, () -> {
|
||||
if (event.getRole().isDeleted() || DiscordPlugin.plugin.isGameRole(event.getRole()))
|
||||
if (event.getRole().isDeleted() || !DiscordPlugin.plugin.isGameRole(event.getRole()))
|
||||
return; //Deleted or not a game role
|
||||
DiscordPlugin.GameRoles.add(event.getRole().getName());
|
||||
DiscordPlugin.sendMessageToChannel(DiscordPlugin.modlogchannel, "Added " + event.getRole().getName() + " as game role. If you don't want this, change the role's color from the default.");
|
||||
|
@ -216,7 +216,7 @@ public class CommandListener {
|
|||
else
|
||||
cmdwithargs.replace(0, cmdwithargs.length(), "help");
|
||||
else {
|
||||
if (cmdwithargs.charAt(0) == '/')
|
||||
if (cmdwithargs.length() > 0 && cmdwithargs.charAt(0) == '/')
|
||||
cmdwithargs.deleteCharAt(0); //Don't treat / as mention, mentions can be used in public mcchat
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import buttondevteam.lib.chat.ChatRoom;
|
|||
import buttondevteam.lib.chat.TBMCChatAPI;
|
||||
import buttondevteam.lib.player.TBMCPlayer;
|
||||
import com.vdurmont.emoji.EmojiParser;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.val;
|
||||
import org.bukkit.Bukkit;
|
||||
|
@ -34,9 +35,10 @@ import sx.blah.discord.util.MissingPermissionsException;
|
|||
import java.awt.*;
|
||||
import java.time.Instant;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -142,8 +144,8 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
val lmd = iterator.next();
|
||||
if ((e.isFromcmd() || isdifferentchannel.test(lmd.channel)) //Test if msg is from Discord
|
||||
&& e.getChannel().ID.equals(lmd.mcchannel.ID)) //If it's from a command, the command msg has been deleted, so we need to send it
|
||||
if (e.shouldSendTo(getSender(lmd.channel, lmd.user)) && e.getGroupID().equals(lmd.groupID))
|
||||
doit.accept(lmd); //TODO: Store dcp and check that both ways, add option to not check sender perms on msg
|
||||
if (e.shouldSendTo(lmd.dcp) && e.getGroupID().equals(lmd.groupID)) //Check original user's permissions
|
||||
doit.accept(lmd);
|
||||
else {
|
||||
iterator.remove(); //If the user no longer has permission, remove the connection
|
||||
DiscordPlugin.sendMessageToChannel(lmd.channel, "The user no longer has permission to view the channel, connection removed.");
|
||||
|
@ -155,7 +157,7 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
}
|
||||
|
||||
@RequiredArgsConstructor
|
||||
private static class LastMsgData {
|
||||
public static class LastMsgData {
|
||||
public IMessage message;
|
||||
public long time;
|
||||
public String content;
|
||||
|
@ -165,15 +167,17 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
public final DiscordPlayer dp;
|
||||
}
|
||||
|
||||
private static class CustomLMD extends LastMsgData {
|
||||
public static class CustomLMD extends LastMsgData {
|
||||
public final String groupID;
|
||||
public final Channel mcchannel;
|
||||
public final DiscordConnectedPlayer dcp;
|
||||
|
||||
public CustomLMD(IChannel channel, IUser user, DiscordPlayer dp, String groupid, Channel mcchannel) {
|
||||
public CustomLMD(@NonNull IChannel channel, @NonNull IUser user, @NonNull DiscordPlayer dp,
|
||||
@NonNull String groupid, @NonNull Channel mcchannel, @NonNull DiscordConnectedPlayer dcp) {
|
||||
super(channel, user, dp);
|
||||
groupID = groupid;
|
||||
this.mcchannel = mcchannel;
|
||||
|
||||
this.dcp = dcp;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -254,8 +258,8 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
.anyMatch(lmd -> ((IPrivateChannel) lmd.channel).getRecipient().getStringID().equals(did));
|
||||
}
|
||||
|
||||
public static void addCustomChat(IChannel channel, String groupid, Channel mcchannel, DiscordPlayer dp, IUser user) {
|
||||
val lmd = new CustomLMD(channel, user, dp, groupid, mcchannel);
|
||||
public static void addCustomChat(IChannel channel, String groupid, Channel mcchannel, DiscordPlayer dp, IUser user, DiscordConnectedPlayer dcp) {
|
||||
val lmd = new CustomLMD(channel, user, dp, groupid, mcchannel, dcp);
|
||||
lastmsgCustom.add(lmd);
|
||||
}
|
||||
|
||||
|
@ -271,6 +275,10 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
return lastmsgCustom.removeIf(lmd -> lmd.channel.getLongID() == channel.getLongID());
|
||||
}
|
||||
|
||||
public static List<CustomLMD> getCustomChats() {
|
||||
return Collections.unmodifiableList(lastmsgCustom);
|
||||
}
|
||||
|
||||
/**
|
||||
* May contain P<DiscordID> as key for public chat
|
||||
*/
|
||||
|
@ -312,12 +320,10 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
}
|
||||
|
||||
public static void forAllMCChat(Consumer<IChannel> action) {
|
||||
System.out.println("XA");
|
||||
action.accept(DiscordPlugin.chatchannel);
|
||||
System.out.println("XB");
|
||||
for (LastMsgData data : lastmsgPerUser)
|
||||
action.accept(data.channel);
|
||||
System.out.println("XC");
|
||||
lastmsgCustom.forEach(cc -> action.accept(cc.channel));
|
||||
}
|
||||
|
||||
private static void forAllowedMCChat(Consumer<IChannel> action, TBMCSystemChatEvent event) {
|
||||
|
@ -326,6 +332,8 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
for (LastMsgData data : lastmsgPerUser)
|
||||
if (event.shouldSendTo(getSender(data.channel, data.user)))
|
||||
action.accept(data.channel);
|
||||
lastmsgCustom.stream().filter(data -> event.shouldSendTo(data.dcp))
|
||||
.map(data -> data.channel).forEach(action);
|
||||
}
|
||||
|
||||
public static void stop() {
|
||||
|
@ -398,11 +406,12 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
dmessage = EmojiParser.parseToAliases(dmessage, EmojiParser.FitzpatrickAction.PARSE); //Converts emoji to text- TODO: Add option to disable (resource pack?)
|
||||
dmessage = dmessage.replaceAll(":(\\S+)\\|type_(?:(\\d)|(1)_2):", ":$1::skin-tone-$2:"); //Convert to Discord's format so it still shows up
|
||||
|
||||
BiConsumer<Channel, String> sendChatMessage = (channel, msg) -> //
|
||||
TBMCChatAPI.SendChatMessage(channel, dsender,
|
||||
msg + (event.getMessage().getAttachments().size() > 0 ? "\n" + event.getMessage()
|
||||
Function<String, String> getChatMessage = msg -> //
|
||||
msg + (event.getMessage().getAttachments().size() > 0 ? "\n" + event.getMessage()
|
||||
.getAttachments().stream().map(a -> a.getUrl()).collect(Collectors.joining("\n"))
|
||||
: ""));
|
||||
: "");
|
||||
|
||||
CustomLMD clmd = getCustomChat(event.getChannel());
|
||||
|
||||
boolean react = false;
|
||||
|
||||
|
@ -411,7 +420,7 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
if (!event.getMessage().isDeleted() && !event.getChannel().isPrivate())
|
||||
event.getMessage().delete();
|
||||
});
|
||||
preprocessChat(dsender, dmessage);
|
||||
//preprocessChat(dsender, dmessage); - Same is done below
|
||||
final String cmdlowercased = dmessage.substring(1).toLowerCase();
|
||||
if (dsender instanceof DiscordSender && Arrays.stream(UnconnectedCmds)
|
||||
.noneMatch(s -> cmdlowercased.equals(s) || cmdlowercased.startsWith(s + " "))) {
|
||||
|
@ -468,7 +477,11 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
dsender.sendMessage("You're now talking in: "
|
||||
+ DPUtils.sanitizeString(dsender.getMcchannel().DisplayName));
|
||||
} else { // Send single message
|
||||
sendChatMessage.accept(chc, event.getMessage().getContent().substring(spi + 2));
|
||||
final String msg = event.getMessage().getContent().substring(spi + 2);
|
||||
if (clmd == null)
|
||||
TBMCChatAPI.SendChatMessage(chc, dsender, getChatMessage.apply(msg), true);
|
||||
else
|
||||
TBMCChatAPI.SendChatMessageDontCheckSender(chc, dsender, getChatMessage.apply(msg), true, clmd.dcp);
|
||||
react = true;
|
||||
}
|
||||
}
|
||||
|
@ -481,20 +494,16 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
|||
TBMCChatAPI.SendSystemMessage(Channel.GlobalChat, 0, "everyone",
|
||||
(dsender instanceof Player ? ((Player) dsender).getDisplayName()
|
||||
: dsender.getName()) + " pinned a message on Discord.");
|
||||
else if (hasCustomChat(event.getChannel())) {
|
||||
val cc = getCustomChat(event.getChannel());
|
||||
sendChatMessage.accept(cc.mcchannel, dmessage);
|
||||
} else {
|
||||
sendChatMessage.accept(dsender.getMcchannel(), dmessage);
|
||||
else {
|
||||
if (clmd != null)
|
||||
TBMCChatAPI.SendChatMessageDontCheckSender(clmd.mcchannel, dsender, getChatMessage.apply(dmessage), false, clmd.dcp);
|
||||
else
|
||||
TBMCChatAPI.SendChatMessage(dsender.getMcchannel(), dsender, getChatMessage.apply(dmessage));
|
||||
react = true;
|
||||
}
|
||||
}
|
||||
if (react) {
|
||||
try {
|
||||
/*
|
||||
* System.out.println("Got message: " + m.getContent() + " with embeds: " + m.getEmbeds().stream().map(e -> e.getTitle() + " " + e.getDescription())
|
||||
* .collect(Collectors.joining("\n")));
|
||||
*/
|
||||
if (lastmsgfromd != null) {
|
||||
DPUtils.perform(() -> lastmsgfromd.removeReaction(DiscordPlugin.dc.getOurUser(),
|
||||
DiscordPlugin.DELIVERED_REACTION)); // Remove it no matter what, we know it's there 99.99% of the time
|
||||
|
|
Loading…
Reference in a new issue