Skip to content

Commit 1e36bf3

Browse files
committed
JDA test
1 parent c6dea76 commit 1e36bf3

File tree

5 files changed

+73
-76
lines changed

5 files changed

+73
-76
lines changed

jda-dependency.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<dependency>
2+
<groupId>net.dv8tion</groupId>
3+
<artifactId>JDA</artifactId>
4+
<version>5.0.0-beta.24</version>
5+
</dependency>

pom.xml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,9 @@
4141
<scope>provided</scope>
4242
</dependency>
4343
<dependency>
44-
<groupId>org.javacord</groupId>
45-
<artifactId>javacord</artifactId>
46-
<version>3.8.0</version>
47-
<type>pom</type>
44+
<groupId>net.dv8tion</groupId>
45+
<artifactId>JDA</artifactId>
46+
<version>5.0.0-beta.24</version>
4847
</dependency>
4948
</dependencies>
5049
<build>

src/main/java/me/tbg/match/bot/DiscordBot.java

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010
import java.util.Map;
1111
import java.util.logging.Logger;
1212
import java.util.stream.Collectors;
13-
import org.javacord.api.DiscordApi;
14-
import org.javacord.api.DiscordApiBuilder;
15-
import org.javacord.api.entity.activity.ActivityType;
16-
import org.javacord.api.entity.channel.Channel;
17-
import org.javacord.api.entity.message.embed.EmbedBuilder;
18-
import org.javacord.api.util.logging.ExceptionLogger;
13+
import net.dv8tion.jda.api.JDA;
14+
import net.dv8tion.jda.api.JDABuilder;
15+
import net.dv8tion.jda.api.EmbedBuilder;
16+
import net.dv8tion.jda.api.entities.Activity;
17+
import net.dv8tion.jda.api.entities.TextChannel;
18+
import net.dv8tion.jda.api.entities.Guild;
19+
import net.dv8tion.jda.api.entities.Message;
20+
import net.dv8tion.jda.api.requests.GatewayIntent;
1921
import tc.oc.pgm.api.PGM;
2022
import tc.oc.pgm.api.Permissions;
2123
import tc.oc.pgm.api.map.Contributor;
@@ -30,7 +32,7 @@
3032

3133
public class DiscordBot {
3234

33-
private DiscordApi api;
35+
private JDA api;
3436
private BotConfig config;
3537
private Logger logger;
3638

@@ -51,59 +53,57 @@ public BotConfig getConfig() {
5153
public void enable() {
5254
if (config.isEnabled()) {
5355
logger.info("Enabling DiscordBot...");
54-
new DiscordApiBuilder()
55-
.setToken(config.getToken())
56-
.setWaitForServersOnStartup(false)
57-
.setWaitForUsersOnStartup(false)
58-
.login()
59-
.thenAcceptAsync(api -> {
60-
setAPI(api);
61-
api.setMessageCacheSize(1, 60 * 60);
62-
api.addServerBecomesAvailableListener(
63-
listener -> logger.info(listener.getServer().getName() + " is now available"));
64-
logger.info("Discord Bot (MatchBot) is now active!");
65-
})
66-
.exceptionally(throwable -> {
67-
logger.info("Failed to login to Discord: " + throwable.getMessage());
68-
return null;
69-
});
56+
try {
57+
this.api = JDABuilder.createDefault(config.getToken())
58+
.enableIntents(GatewayIntent.GUILD_MESSAGES, GatewayIntent.GUILD_MEMBERS)
59+
.setActivity(Activity.playing("Starting up..."))
60+
.build();
61+
this.api.awaitReady();
62+
logger.info("Discord Bot (MatchBot) is now active!");
63+
} catch (Exception e) {
64+
logger.info("Failed to login to Discord: " + e.getMessage());
65+
}
7066
}
7167
}
7268

73-
private void setAPI(DiscordApi api) {
69+
private void setAPI(JDA api) {
7470
this.api = api;
7571
}
7672

7773
public void disable() {
7874
if (this.api != null) {
79-
this.api.disconnect();
75+
this.api.shutdown();
8076
}
8177
this.api = null;
8278
}
8379

8480
public void sendMatchEmbed(EmbedBuilder embed, Match match) {
8581
if (api != null) {
86-
api.updateActivity(ActivityType.PLAYING, match.getMap().getName());
87-
api.getServerById(config.getServerId())
88-
.flatMap(server ->
89-
server.getChannelById(config.getMatchChannel()).flatMap(Channel::asTextChannel))
90-
.ifPresent(textChannel -> textChannel
91-
.sendMessage(embed)
92-
.thenAccept(message -> matchMessageMap.put(Long.valueOf(match.getId()), message.getId()))
93-
.exceptionally(ExceptionLogger.get()));
82+
api.getPresence().setActivity(Activity.playing(match.getMap().getName()));
83+
Guild guild = api.getGuildById(config.getServerId());
84+
if (guild != null) {
85+
TextChannel textChannel = guild.getTextChannelById(config.getMatchChannel());
86+
if (textChannel != null) {
87+
textChannel.sendMessageEmbeds(embed.build()).queue(message -> {
88+
matchMessageMap.put(Long.valueOf(match.getId()), message.getIdLong());
89+
});
90+
}
91+
}
9492
}
9593
}
9694

9795
public void editMatchEmbed(long matchId, EmbedBuilder newEmbed) {
9896
if (api != null && matchMessageMap.containsKey(matchId)) {
99-
long messageId = matchMessageMap.get(matchId);
100-
api.getServerById(config.getServerId())
101-
.flatMap(server ->
102-
server.getChannelById(config.getMatchChannel()).flatMap(Channel::asTextChannel))
103-
.ifPresent(textChannel -> textChannel
104-
.getMessageById(messageId)
105-
.thenAccept(message -> message.edit(newEmbed))
106-
.exceptionally(ExceptionLogger.get()));
97+
Guild guild = api.getGuildById(config.getServerId());
98+
if (guild != null) {
99+
TextChannel textChannel = guild.getTextChannelById(config.getMatchChannel());
100+
if (textChannel != null) {
101+
long messageId = matchMessageMap.get(matchId);
102+
textChannel.retrieveMessageById(messageId).queue(message -> {
103+
message.editMessageEmbeds(newEmbed.build()).queue();
104+
});
105+
}
106+
}
107107
}
108108
}
109109

src/main/java/me/tbg/match/bot/MatchFinishListener.java

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import java.util.Comparator;
66
import java.util.Map;
77
import java.util.stream.Collectors;
8+
import net.dv8tion.jda.api.EmbedBuilder;
89
import org.bukkit.event.EventHandler;
910
import org.bukkit.event.Listener;
10-
import org.javacord.api.entity.message.embed.EmbedBuilder;
1111
import tc.oc.pgm.api.map.MapInfo;
1212
import tc.oc.pgm.api.match.Match;
1313
import tc.oc.pgm.api.match.event.MatchFinishEvent;
@@ -65,7 +65,7 @@ private EmbedBuilder createMatchFinishEmbed(
6565
ScoreMatchModule scoreModule,
6666
TeamMatchModule teamModule) {
6767
EmbedBuilder embed = new EmbedBuilder()
68-
.setColor(winnerColor)
68+
.setColor(winnerColor.getRGB())
6969
.setTitle("Match #" + match.getId() + " has finished!")
7070
.setDescription("Started at <t:" + bot.getMatchStartTimestamp(Long.parseLong(match.getId()))
7171
+ ":f> with **"
@@ -74,33 +74,30 @@ private EmbedBuilder createMatchFinishEmbed(
7474
+ "** and finished at <t:" + Instant.now().getEpochSecond() + ":f> with **"
7575
+ match.getPlayers().size() + (match.getPlayers().size() == 1 ? " player" : " players")
7676
+ "** online.")
77-
.addInlineField("Winner", winner)
78-
.addInlineField("Time", bot.parseDuration(match.getDuration()));
77+
.addField("Winner", winner, true)
78+
.addField("Time", bot.parseDuration(match.getDuration()), true);
7979

8080
if (scoreModule != null) {
8181
if (teamModule != null) {
8282
Map<String, Integer> teamScores = match.getCompetitors().stream()
8383
.collect(Collectors.toMap(Competitor::getNameLegacy, team -> (int) scoreModule.getScore(team)));
84-
embed.addInlineField("Scores", formatScores(teamScores));
84+
embed.addField("Scores", formatScores(teamScores), true);
8585
} else {
8686
Map<String, Integer> playerScores = match.getCompetitors().stream()
8787
.collect(Collectors.toMap(
8888
Competitor::getNameLegacy, player -> (int) scoreModule.getScore(player)));
89-
embed.addInlineField("Podium", formatPodium(playerScores));
89+
embed.addField("Podium", formatPodium(playerScores), true);
9090
}
9191
} else {
92-
embed.addInlineField("\u200E", "\u200E");
92+
embed.addField("\u200E", "\u200E", false);
9393
}
9494

95-
embed.addInlineField("Map", map.getName())
96-
.addInlineField("Version", map.getVersion().toString())
97-
.addInlineField("Gamemodes", bot.getMapGamemodes(match).toUpperCase())
98-
.addInlineField(
99-
"Participants", String.valueOf(match.getParticipants().size()))
100-
.addInlineField(
101-
"Observers",
102-
String.valueOf(match.getDefaultParty().getPlayers().size()))
103-
.addInlineField("Staff", String.valueOf(bot.getOnlineStaffCount(match)))
95+
embed.addField("Map", map.getName(), true)
96+
.addField("Version", map.getVersion().toString(), true)
97+
.addField("Gamemodes", bot.getMapGamemodes(match).toUpperCase(), true)
98+
.addField("Participants", String.valueOf(match.getParticipants().size()), true)
99+
.addField("Observers", String.valueOf(match.getDefaultParty().getPlayers().size()), true)
100+
.addField("Staff", String.valueOf(bot.getOnlineStaffCount(match)), true)
104101
.setFooter("Map tags: " + map.getTags().toString());
105102

106103
bot.setEmbedThumbnail(map, embed, bot);

src/main/java/me/tbg/match/bot/MatchStartListener.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66
import org.bukkit.event.EventHandler;
77
import org.bukkit.event.Listener;
8-
import org.javacord.api.entity.message.embed.EmbedBuilder;
8+
9+
import net.dv8tion.jda.api.EmbedBuilder;
910
import tc.oc.pgm.api.map.MapInfo;
1011
import tc.oc.pgm.api.match.Match;
1112
import tc.oc.pgm.api.match.event.MatchStartEvent;
@@ -34,21 +35,16 @@ public void onMatchStart(MatchStartEvent event) {
3435

3536
private EmbedBuilder createMatchStartEmbed(Match match, MapInfo map) {
3637
return new EmbedBuilder()
37-
.setColor(Color.WHITE)
38+
.setColor(Color.WHITE.getRGB())
3839
.setTitle("Match #" + match.getId() + " has started!")
3940
.setDescription(bot.getMatchDescription(match))
40-
.addInlineField("Map", map.getName())
41-
.addInlineField("Version", map.getVersion().toString())
42-
.addInlineField("Gamemodes", bot.getMapGamemodes(match).toUpperCase())
43-
.addInlineField("Created by", bot.getMapAuthors(match))
44-
.addInlineField("Pools", bot.getMapPools(match))
45-
.addField("Objective", map.getDescription())
46-
.addInlineField(
47-
"Participants", String.valueOf(match.getParticipants().size()))
48-
.addInlineField(
49-
"Observers",
50-
String.valueOf(match.getDefaultParty().getPlayers().size()))
51-
.addInlineField("Staff", String.valueOf(bot.getOnlineStaffCount(match)))
52-
.setFooter("Map tags: " + map.getTags().toString());
41+
.addField("Map", map.getName(), true)
42+
.addField("Version", map.getVersion().toString(), true)
43+
.addField("Gamemodes", bot.getMapGamemodes(match).toUpperCase(), true)
44+
.addField("Created by", bot.getMapAuthors(match), true)
45+
.addField("Pools", bot.getMapPools(match), true)
46+
.addField("Objective", map.getDescription(), false)
47+
.addField("Participants", String.valueOf(match.getParticipants().size()), true)
48+
.addField("Observers", String.valueOf(match.getDefaultParty().getPlayers().size()), true);
5349
}
5450
}

0 commit comments

Comments
 (0)