Skip to content

Commit 1e687cf

Browse files
Add Advanced Tagging Detection
* "Advanced" actually means startsWith -> contains but we don't need to tell them that * Also added databaselookup for getUsersPartiallyMatching * Added config option enable_shortcut_use_database
1 parent 515f051 commit 1e687cf

7 files changed

Lines changed: 46 additions & 9 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@
186186
<dependency>
187187
<groupId>com.visualfiredev</groupId>
188188
<artifactId>javabase</artifactId>
189-
<version>0.0.3</version>
189+
<version>0.1.0</version>
190190
<scope>compile</scope>
191191
</dependency>
192192

src/main/java/com/firecontroller1847/truediscordlink/DiscordManager.java

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.firecontroller1847.truediscordlink;
22

3+
import com.firecontroller1847.truediscordlink.database.DbPlayer;
4+
import com.firecontroller1847.truediscordlink.listeners.discord.DiscordChatListener;
5+
import com.firecontroller1847.truediscordlink.listeners.discord.DiscordEditListener;
36
import com.google.gson.JsonArray;
47
import com.google.gson.JsonObject;
58
import com.vdurmont.emoji.EmojiParser;
6-
import com.firecontroller1847.truediscordlink.listeners.discord.DiscordChatListener;
7-
import com.firecontroller1847.truediscordlink.listeners.discord.DiscordEditListener;
9+
import com.visualfiredev.javabase.Database;
810
import me.clip.placeholderapi.PlaceholderAPI;
911
import net.md_5.bungee.api.ChatColor;
1012
import net.md_5.bungee.api.chat.ClickEvent;
@@ -495,6 +497,29 @@ private void modifyAddCheckMentions(AtomicReference<String> content, AtomicRefer
495497
}
496498

497499
public static ArrayList<User> getUsersPartiallyMatching(Server server, String partialUsername, boolean firstOnly) {
500+
TrueDiscordLink tdl = (TrueDiscordLink) TrueDiscordLink.getInstance();
501+
502+
// Check Database
503+
if (tdl.getConfig().getBoolean("tagging.enable_shortcut_use_database")) {
504+
Database database = tdl.getDatabaseManager().getDatabase();
505+
if (database != null && database.isConnected()) {
506+
try {
507+
ArrayList<DbPlayer> results = database.select(DbPlayer.getTableSchema(database), DbPlayer.class, "name LIKE ?", "%" + partialUsername + "%");
508+
if (results.size() > 0) {
509+
String did = results.get(0).getDiscordId();
510+
User user = tdl.getDiscordManager().getApi().getUserById(did).get();
511+
ArrayList<User> users = new ArrayList<>();
512+
users.add(user);
513+
return users;
514+
}
515+
} catch (Exception e) {
516+
// Ignore and move on
517+
e.printStackTrace();
518+
}
519+
}
520+
}
521+
522+
// Check Discord
498523
Collection<User> users = server.getMembers();
499524
ArrayList<User> matchingUsers = new ArrayList<>();
500525
for (User user : users) {
@@ -508,7 +533,7 @@ public static ArrayList<User> getUsersPartiallyMatching(Server server, String pa
508533
added = true;
509534

510535
// Check for partial match
511-
} else if (partialUsername.length() > 3 && (name.toLowerCase().startsWith(partialUsername.toLowerCase()) || nickname.toLowerCase().startsWith(partialUsername.toLowerCase()))) {
536+
} else if (partialUsername.length() > 3 && (name.toLowerCase().contains(partialUsername.toLowerCase()) || nickname.toLowerCase().contains(partialUsername.toLowerCase()))) {
512537
matchingUsers.add(user);
513538
added = true;
514539

src/main/java/com/firecontroller1847/truediscordlink/TrueDiscordLink.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,19 @@ private void migrateConfigurations() throws IOException {
8484
boolean migrated = false;
8585

8686
// v1.0.3 -> v1.0.4
87-
if (!translations.contains("messages.to_mc_attachment_color")) {
87+
if (!translations.contains("messages.to_mc_attachment_color", true)) {
8888
translations.set("messages.to_mc_attachment_color", "§9§n");
8989
this.getLogger().info("[en.yml] Added messages.to_mc_attachment_color");
9090
migrated = true;
9191
}
9292

93+
// v1.0.4 -> v1.1.0
94+
if (!getConfig().contains("tagging.enable_shortcut_use_database", true)) {
95+
getConfig().set("tagging.enable_shortcut_use_database", true);
96+
this.getLogger().info("[config.yml] Added tagging.enable_shortcut_use_database");
97+
migrated = true;
98+
}
99+
93100
// Save
94101
if (migrated) {
95102
this.saveConfig();

src/main/java/com/firecontroller1847/truediscordlink/commands/CommandLink.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
4444
// Check if user is in database
4545
try {
4646
ArrayList<DbPlayer> results;
47-
results = database.select(DbPlayer.getTableSchema(database), "minecraft_uuid = '" + player.getUniqueId().toString() + "'", DbPlayer.class);
47+
results = database.select(DbPlayer.getTableSchema(database), DbPlayer.class, "minecraft_uuid = ?", player.getUniqueId().toString());
4848

4949
// Store dbPlayer
5050
DbPlayer dbPlayer;
@@ -57,7 +57,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
5757
database.insert(dbPlayerNew);
5858

5959
// Re-fetch DbPlayer
60-
dbPlayer = database.select(DbPlayer.getTableSchema(database), "minecraft_uuid = '" + player.getUniqueId().toString() + "'", DbPlayer.class).get(0);
60+
dbPlayer = database.select(DbPlayer.getTableSchema(database), DbPlayer.class, "minecraft_uuid = ?", player.getUniqueId().toString()).get(0);
6161

6262
// If we are in the database...
6363
} else {

src/main/java/com/firecontroller1847/truediscordlink/commands/CommandUnlink.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
3939

4040
try {
4141
ArrayList<DbPlayer> results;
42-
results = database.select(DbPlayer.getTableSchema(database), "minecraft_uuid = '" + player.getUniqueId().toString() + "'", DbPlayer.class);
42+
results = database.select(DbPlayer.getTableSchema(database), DbPlayer.class, "minecraft_uuid = ?", player.getUniqueId().toString());
4343
if (results.size() == 0) {
4444
player.sendMessage(plugin.getTranslation("linking.does_not_exist"));
4545
return true;

src/main/java/com/firecontroller1847/truediscordlink/listeners/discord/DiscordChatListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void onMessageCreate(MessageCreateEvent event) {
5858
try {
5959
// Search for value in database
6060
Database database = discordlink.getDatabaseManager().getDatabase();
61-
ArrayList<DbPlayer> results = database.select(DbPlayer.getTableSchema(database), "discord_id = '" + message.getAuthor().getIdAsString() + "'", DbPlayer.class);
61+
ArrayList<DbPlayer> results = database.select(DbPlayer.getTableSchema(database), DbPlayer.class, "discord_id = ?", message.getAuthor().getIdAsString());
6262
if (results.size() == 0) {
6363
message.getChannel().sendMessage(discordlink.getTranslation("linking.discord.no_request"));
6464
return;

src/main/resources/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,15 @@ tagging:
144144
enable_user_tagging: true
145145

146146
# Enables detection of attempted tags to convert them to proper Discord mentions. (Ex: @Fire -> <@112732946774962176>)
147+
# Minimum of four characters.
147148
# If enable_user_tagging is enabled, you probably want this enabled to.
148149
# This only works if bot.enabled is set to true.
149150
enable_user_tagging_shortcut: true
150151

152+
# If the shortcut is enabled, whether or not to also attempt to find mentions by looking through the linked accounts database.
153+
# For example, if a Minecraft username "ABCD" has linked their account, but their Discord username is "EEEE," typing "@ABCD" will tag "@EEEE."
154+
enable_shortcut_use_database: true
155+
151156
# Whether or not to allow Minecraft users to tag Discord roles
152157
enable_role_tagging: false
153158

0 commit comments

Comments
 (0)