Skip to content

Commit 7abea0c

Browse files
committed
Final complete
1 parent 0b259ee commit 7abea0c

29 files changed

+634
-156
lines changed

dependency-reduced-pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>me.Joshb</groupId>
55
<artifactId>DiscordBotAPI</artifactId>
6-
<version>1.0.3</version>
6+
<version>1.0.0</version>
77
<build>
88
<sourceDirectory>src/main/java</sourceDirectory>
99
<resources>
@@ -12,6 +12,7 @@
1212
<filtering>true</filtering>
1313
<directory>${basedir}/src/main/resources/</directory>
1414
<includes>
15+
<include>bungee.yml</include>
1516
<include>plugin.yml</include>
1617
<include>Messages.yml</include>
1718
<include>Config.yml</include>

pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>me.Joshb</groupId>
88
<artifactId>DiscordBotAPI</artifactId>
9-
<version>1.0.0</version>
9+
<version>1.0.4</version>
1010

1111
<build>
1212
<sourceDirectory>src/main/java</sourceDirectory>
@@ -16,6 +16,7 @@
1616
<filtering>true</filtering>
1717
<directory>${basedir}/src/main/resources/</directory>
1818
<includes>
19+
<include>bungee.yml</include>
1920
<include>plugin.yml</include>
2021
<include>Messages.yml</include>
2122
<include>Config.yml</include>

src/main/java/me/joshb/discordbotapi/server/assets/Permission.java renamed to src/main/java/me/joshb/discordbotapi/Permission.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package me.joshb.discordbotapi.server.assets;
1+
package me.joshb.discordbotapi;
22

33
public enum Permission {
44

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package me.joshb.discordbotapi.bungee;
2+
3+
4+
import me.joshb.discordbotapi.bungee.config.LinkedAccounts;
5+
import net.md_5.bungee.config.Configuration;
6+
7+
import java.util.UUID;
8+
9+
public class AccountManager {
10+
11+
public AccountManager(){}
12+
private static AccountManager instance = new AccountManager();
13+
public static AccountManager getInstance(){
14+
return instance;
15+
}
16+
17+
public void setCode(UUID uuid, String code){
18+
getConfig().set(uuid.toString() + ".Code", code);
19+
LinkedAccounts.getInstance().save();
20+
}
21+
22+
public String getCode(UUID uuid){
23+
return getConfig().getString(uuid.toString() + ".Code");
24+
}
25+
26+
public boolean matchCode(String code){
27+
for(String uuid : getConfig().getKeys()){
28+
if(getConfig().getString(uuid + ".Code").equals(code)) {
29+
return true;
30+
}
31+
}
32+
return false;
33+
}
34+
35+
public void setDiscordID(String discordID, String code){
36+
for(String uuid : getConfig().getKeys()){
37+
if(getConfig().getString(uuid + ".Code").equals(code)) {
38+
getConfig().set(uuid + ".Discord-ID", discordID);
39+
LinkedAccounts.getInstance().save();
40+
}
41+
}
42+
}
43+
44+
public String getDiscordID(UUID uuid){
45+
String string = getConfig().getString(uuid.toString() + ".Discord-ID");
46+
if(string == null || string.equalsIgnoreCase("")){
47+
return null;
48+
}
49+
return string;
50+
}
51+
52+
public UUID getUUID(String discordID){
53+
for(String uuid : getConfig().getKeys()){
54+
if(getConfig().getString(uuid + ".Discord-ID").equals(discordID)){
55+
return UUID.fromString(uuid);
56+
}
57+
}
58+
return null;
59+
}
60+
61+
public void unlinkAccount(UUID uuid){
62+
getConfig().set(uuid.toString(), null);
63+
LinkedAccounts.getInstance().save();
64+
}
65+
66+
public void unlinkAccount(String discordID){
67+
for(String uuid : getConfig().getKeys()){
68+
if(getConfig().getString(uuid + ".Discord-ID").equals(discordID)) {
69+
getConfig().set(uuid, null);
70+
LinkedAccounts.getInstance().save();
71+
}
72+
}
73+
}
74+
75+
private Configuration getConfig(){
76+
return LinkedAccounts.getInstance().getConfig();
77+
}
78+
}
Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,48 @@
11
package me.joshb.discordbotapi.bungee;
22

3+
import me.joshb.discordbotapi.bungee.config.Config;
4+
import me.joshb.discordbotapi.bungee.config.LinkedAccounts;
5+
import me.joshb.discordbotapi.bungee.config.Messages;
6+
import me.joshb.discordbotapi.bungee.command.CommandManager;
7+
import me.joshb.discordbotapi.bungee.listener.DiscordMessageReceived;
38
import net.dv8tion.jda.api.JDA;
49
import net.dv8tion.jda.api.JDABuilder;
10+
import net.dv8tion.jda.api.requests.GatewayIntent;
11+
import net.md_5.bungee.api.ProxyServer;
512
import net.md_5.bungee.api.plugin.Plugin;
613

714
import javax.security.auth.login.LoginException;
815

916
public class DiscordBotAPI extends Plugin {
1017

11-
public static JDA jda;
18+
public JDA jda;
1219

1320
public static DiscordBotAPI plugin;
1421

1522
public void onEnable(){
1623
plugin = this;
1724

1825
Config.getInstance().initialize();
26+
LinkedAccounts.getInstance().initialize();
27+
Messages.getInstance().initialize();
1928

2029
if(Config.getInstance().getConfig().getString("Bot.Token").equals("token_here")){
2130
getLogger().severe("Plugin Disabled. The bot token is invalid.");
2231
return;
2332
}
2433

25-
JDABuilder builder = JDABuilder.createDefault(Config.getInstance().getConfig().getString("Bot.Token"));
34+
CommandManager cm = new CommandManager();
35+
cm.initializeSubCommands();
36+
ProxyServer.getInstance().getPluginManager().registerCommand(this, cm);
37+
38+
JDABuilder builder = JDABuilder.create(Config.getInstance().getConfig().getString("Bot.Token"), GatewayIntent.GUILD_MEMBERS, GatewayIntent.GUILD_MESSAGE_REACTIONS);
2639

2740
try {
2841
jda = builder.build();
2942
} catch (LoginException e) {
3043
getLogger().severe("Plugin Disabled. The bot token is invalid. Reason: " + e.getMessage());
3144
}
45+
jda.addEventListener(new DiscordMessageReceived());
3246
}
3347

3448
public void onDisable(){
@@ -37,7 +51,12 @@ public void onDisable(){
3751
}
3852
}
3953

40-
public static JDA getJDA(){
54+
public JDA getJDA(){
4155
return jda;
4256
}
57+
58+
public static AccountManager getAccountManager() {
59+
return AccountManager.getInstance();
60+
}
61+
4362
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package me.joshb.discordbotapi.bungee.assets;
2+
3+
import me.joshb.discordbotapi.bungee.config.Messages;
4+
import net.dv8tion.jda.api.entities.User;
5+
import net.md_5.bungee.api.ChatColor;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
public class Assets {
11+
12+
public static String formatDiscordMessage(String location, User user){
13+
return Messages.getInstance().getConfig().getString(location)
14+
.replaceAll("%author_@%", user.getAsMention())
15+
.replaceAll("%author_name%", user.getName())
16+
.replaceAll("%author_id%", user.getId());
17+
}
18+
19+
public static String format(String location){
20+
return ChatColor.translateAlternateColorCodes('&',
21+
Messages.getInstance().getConfig().getString(location).replaceAll("%prefix%",
22+
Messages.getInstance().getConfig().getString("Game.Prefix")));
23+
}
24+
25+
public static List<String> formatStringList(String location){
26+
List<String> newList = new ArrayList<>();
27+
for(String s : Messages.getInstance().getConfig().getStringList(location)){
28+
newList.add(ChatColor.translateAlternateColorCodes('&', s));
29+
}
30+
return newList;
31+
}
32+
33+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package me.joshb.discordbotapi.bungee.command;
2+
3+
import me.joshb.discordbotapi.Permission;
4+
import me.joshb.discordbotapi.bungee.DiscordBotAPI;
5+
import me.joshb.discordbotapi.bungee.assets.Assets;
6+
import me.joshb.discordbotapi.bungee.config.Config;
7+
import net.dv8tion.jda.api.entities.User;
8+
import net.md_5.bungee.api.connection.ProxiedPlayer;
9+
10+
import java.util.List;
11+
import java.util.Random;
12+
13+
public class CommandLink extends DiscordCommand {
14+
15+
private final String command = Config.getInstance().getConfig().getString("Bot.Command-Prefix");
16+
17+
@Override
18+
public String command() {
19+
return "link";
20+
}
21+
22+
@Override
23+
public void onCommand(ProxiedPlayer p, String[] args) {
24+
if(!p.hasPermission(Permission.GAME_DISCORD_LINK.getValue())){
25+
p.sendMessage(Assets.format("Game.Discord.Commands.No-Permission"));
26+
return;
27+
}
28+
if(DiscordBotAPI.getAccountManager().getDiscordID(p.getUniqueId()) == null){
29+
//Not linked
30+
List<String> notLinked = Assets.formatStringList("Game.Commands.Discord.Sub-Commands.Link.Not-Linked");
31+
String randomCode = code();
32+
DiscordBotAPI.getAccountManager().setCode(p.getUniqueId(), randomCode);
33+
for(String s : notLinked){
34+
p.sendMessage(s
35+
.replaceAll("%code%", randomCode)
36+
.replaceAll("%player%", p.getName())
37+
.replaceAll("%command_prefix%", command)
38+
.replaceAll("%discord_bot_name%", DiscordBotAPI.plugin.getJDA().getSelfUser().getName()));
39+
}
40+
} else {
41+
//Linked
42+
User u = DiscordBotAPI.plugin.getJDA().getUserById(DiscordBotAPI.getAccountManager().getDiscordID(p.getUniqueId()));
43+
List<String> linked = Assets.formatStringList("Game.Commands.Discord.Sub-Commands.Link.Linked");
44+
for(String s : linked){
45+
p.sendMessage(s
46+
.replaceAll("%player%", p.getName())
47+
.replaceAll("%discord_bot_name%", DiscordBotAPI.plugin.getJDA().getSelfUser().getName())
48+
.replaceAll("%discord_author_name%", u.getName())
49+
.replaceAll("%discord_author_discriminator%", u.getDiscriminator()));
50+
}
51+
}
52+
}
53+
54+
private String code(){
55+
Random r = new Random();
56+
return String.format("%04d", r.nextInt(10000));
57+
}
58+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package me.joshb.discordbotapi.bungee.command;
2+
3+
import me.joshb.discordbotapi.Permission;
4+
import me.joshb.discordbotapi.bungee.DiscordBotAPI;
5+
import me.joshb.discordbotapi.bungee.assets.Assets;
6+
import net.dv8tion.jda.api.entities.User;
7+
import net.md_5.bungee.api.CommandSender;
8+
import net.md_5.bungee.api.connection.ProxiedPlayer;
9+
import net.md_5.bungee.api.plugin.Command;
10+
11+
import java.util.ArrayList;
12+
import java.util.Arrays;
13+
import java.util.List;
14+
15+
public class CommandManager extends Command {
16+
17+
public CommandManager() { super("discord", Permission.GAME_DISCORD.getValue(), "");}
18+
19+
private List<DiscordCommand> commands = new ArrayList<>();
20+
21+
public void initializeSubCommands(){
22+
commands.add(new CommandLink());
23+
commands.add(new CommandUnlink());
24+
}
25+
26+
public void execute(CommandSender sender, String[] args) {
27+
if(!(sender instanceof ProxiedPlayer)){
28+
sender.sendMessage(Assets.format("Game.Commands.Player-Only-Command"));
29+
return;
30+
}
31+
ProxiedPlayer p = (ProxiedPlayer) sender;
32+
33+
if(args.length == 0){
34+
//Not Linked
35+
if(DiscordBotAPI.getAccountManager().getDiscordID(p.getUniqueId()) == null){
36+
List<String> notLinked = Assets.formatStringList("Game.Commands.Discord.Not-Linked");
37+
for(String s : notLinked){
38+
p.sendMessage(s
39+
.replaceAll("%player%", p.getName()));
40+
}
41+
//Linked
42+
} else {
43+
String discordID = DiscordBotAPI.getAccountManager().getDiscordID(p.getUniqueId());
44+
User u = DiscordBotAPI.plugin.getJDA().getUserById(discordID);
45+
List<String> linked = Assets.formatStringList("Game.Commands.Discord.Linked");
46+
for(String s : linked){
47+
p.sendMessage(s
48+
.replaceAll("%player%", p.getName())
49+
.replaceAll("%discord_bot_name%", DiscordBotAPI.plugin.getJDA().getSelfUser().getName())
50+
.replaceAll("%discord_author_name%", u.getName())
51+
.replaceAll("%discord_author_discriminator%", u.getDiscriminator()));
52+
}
53+
}
54+
} else {
55+
DiscordCommand cmd = get(args[0]);
56+
if (!(cmd == null)) {
57+
ArrayList<String> a = new ArrayList<>(Arrays.asList(args));
58+
a.remove(0);
59+
args = a.toArray(new String[a.size()]);
60+
cmd.onCommand(p, args);
61+
return;
62+
}
63+
}
64+
}
65+
66+
private DiscordCommand get(String name) {
67+
for (DiscordCommand cmd : commands) {
68+
if (cmd.command().equalsIgnoreCase(name))
69+
return cmd;
70+
}
71+
return null;
72+
}
73+
}

0 commit comments

Comments
 (0)