Skip to content

Commit a2ee5b9

Browse files
committed
Savepoint (convert all commands to jda commands) and more refactoring
1 parent df3e36f commit a2ee5b9

115 files changed

Lines changed: 2376 additions & 3738 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

bot/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ dependencies {
2121
exclude(module = "opus-java")
2222
}
2323

24+
implementation("io.github.kaktushose:jda-commands:5.0.0")
25+
2426
implementation("net.dv8tion", "JDA", "6.4.1")
2527

2628
implementation(libs.javalin.bundle)

bot/src/main/java/de/chojo/gamejam/Bot.java

Lines changed: 15 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,18 @@
66

77
package de.chojo.gamejam;
88

9+
import com.google.inject.Guice;
910
import com.zaxxer.hikari.HikariDataSource;
1011
import de.chojo.gamejam.api.Api;
11-
import de.chojo.gamejam.commands.jamadmin.JamAdmin;
12-
import de.chojo.gamejam.commands.register.Register;
13-
import de.chojo.gamejam.commands.server.Server;
14-
import de.chojo.gamejam.commands.serveradmin.ServerAdmin;
15-
import de.chojo.gamejam.commands.settings.Settings;
16-
import de.chojo.gamejam.commands.team.Team;
17-
import de.chojo.gamejam.commands.unregister.Unregister;
18-
import de.chojo.gamejam.commands.vote.Votes;
1912
import de.chojo.gamejam.configuration.Configuration;
2013
import de.chojo.gamejam.data.access.Guilds;
14+
import de.chojo.gamejam.listener.InviteButtonListener;
2115
import de.chojo.gamejam.data.access.Teams;
16+
import de.chojo.gamejam.server.DockerService;
2217
import de.chojo.gamejam.server.ServerService;
18+
import de.chojo.gamejam.server.CommandContextProvider;
2319
import de.chojo.gamejam.util.LogNotify;
2420
import de.chojo.gamejam.util.Token;
25-
import de.chojo.jdautil.interactions.dispatching.InteractionHub;
2621
import de.chojo.jdautil.localization.ILocalizer;
2722
import de.chojo.jdautil.localization.Localizer;
2823
import de.chojo.sadu.core.exceptions.ExceptionTransformer;
@@ -35,6 +30,8 @@
3530
import de.chojo.sadu.queries.api.configuration.QueryConfiguration;
3631
import de.chojo.sadu.updater.QueryReplacement;
3732
import de.chojo.sadu.updater.SqlUpdater;
33+
import io.github.kaktushose.jdac.JDACommands;
34+
import io.github.kaktushose.jdac.guice.GuiceExtensionData;
3835
import net.dv8tion.jda.api.interactions.DiscordLocale;
3936
import net.dv8tion.jda.api.requests.GatewayIntent;
4037
import net.dv8tion.jda.api.requests.RestAction;
@@ -46,19 +43,13 @@
4643

4744
import javax.security.auth.login.LoginException;
4845
import java.io.IOException;
49-
import java.nio.file.Files;
50-
import java.nio.file.Path;
51-
import java.nio.file.StandardCopyOption;
52-
import java.nio.file.attribute.PosixFilePermission;
5346
import java.sql.SQLException;
5447
import java.util.List;
5548
import java.util.Optional;
56-
import java.util.Set;
5749
import java.util.concurrent.ExecutorService;
5850
import java.util.concurrent.Executors;
5951
import java.util.concurrent.ScheduledExecutorService;
6052
import java.util.concurrent.ThreadFactory;
61-
import java.util.concurrent.TimeUnit;
6253

6354
import static de.chojo.sadu.queries.api.call.Call.call;
6455
import static org.slf4j.LoggerFactory.getLogger;
@@ -80,6 +71,7 @@ public class Bot {
8071
private ShardManager shardManager;
8172
private Guilds guilds;
8273
private ServerService serverService;
74+
private DockerService dockerService;
8375
private Teams teams;
8476
private Api api;
8577

@@ -160,22 +152,12 @@ private void buildLocale() {
160152
}
161153

162154
private void buildCommands() {
163-
InteractionHub.builder(shardManager)
164-
.withLocalizer(localizer)
165-
.withCommands(new JamAdmin(guilds),
166-
new Register(guilds),
167-
new Settings(guilds),
168-
new Team(guilds, configuration),
169-
new Unregister(guilds),
170-
new Votes(guilds),
171-
new Server(guilds, serverService, configuration),
172-
new ServerAdmin(guilds, serverService))
173-
.withPagination(builder -> builder.withLocalizer(localizer)
174-
.withCache(cache -> cache.expireAfterAccess(30, TimeUnit.MINUTES)))
175-
.withMenuService(builder -> builder.withLocalizer(localizer)
176-
.withCache(cache -> cache.expireAfterAccess(30, TimeUnit.MINUTES)))
177-
.withModalService(builder -> builder.withLocalizer(localizer))
178-
.build();
155+
var userContextProvider = new CommandContextProvider(guilds);
156+
var injector = Guice.createInjector(new BotModule(serverService, userContextProvider));
157+
JDACommands.builder(shardManager)
158+
.extensionData(new GuiceExtensionData(injector))
159+
.start();
160+
shardManager.addEventListener(new InviteButtonListener(guilds));
179161
}
180162

181163
private void initBot() {
@@ -189,8 +171,6 @@ private void initBot() {
189171
.setEventPool(Executors.newScheduledThreadPool(5, createThreadFactory("Event Worker")))
190172
.build();
191173
RestAction.setDefaultFailure(throwable -> log.error("Unhandled exception occurred: ", throwable));
192-
serverService.inject(teams);
193-
serverService.syncVelocity();
194174
}
195175

196176
private void initDb() throws IOException, SQLException {
@@ -243,23 +223,7 @@ private void initDb() throws IOException, SQLException {
243223
}
244224

245225
private void initServer() throws IOException {
246-
serverService = ServerService.create(configuration);
247-
248-
var templateDir = Path.of(configuration.serverTemplate().templateDir());
249-
var serverDir = Path.of(configuration.serverManagement().serverDir());
250-
var pluginDir = Path.of(configuration.plugins().pluginDir());
251-
252-
Files.createDirectories(templateDir);
253-
Files.createDirectories(serverDir);
254-
Files.createDirectories(pluginDir);
255-
256-
Path wait = Path.of("wait.sh");
257-
Files.copy(getClass().getClassLoader().getResourceAsStream("wait.sh"),
258-
wait, StandardCopyOption.REPLACE_EXISTING);
259-
try {
260-
Files.setPosixFilePermissions(wait, Set.of(PosixFilePermission.OWNER_EXECUTE, PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE));
261-
} catch (UnsupportedOperationException e) {
262-
log.error("Use linux...");
263-
}
226+
serverService = new ServerService(configuration);
227+
dockerService = new DockerService(configuration.docker(), configuration.plugins());
264228
}
265229
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* SPDX-License-Identifier: AGPL-3.0-only
3+
*
4+
* Copyright (C) 2022 DevCord Team and Contributor
5+
*/
6+
7+
package de.chojo.gamejam;
8+
9+
import com.google.inject.AbstractModule;
10+
import de.chojo.gamejam.server.ServerService;
11+
import de.chojo.gamejam.server.CommandContextProvider;
12+
13+
public class BotModule extends AbstractModule {
14+
private final ServerService serverService;
15+
private final CommandContextProvider commandContextProvider;
16+
17+
public BotModule(ServerService serverService, CommandContextProvider commandContextProvider) {
18+
this.serverService = serverService;
19+
this.commandContextProvider = commandContextProvider;
20+
}
21+
22+
@Override
23+
protected void configure() {
24+
bind(ServerService.class).toInstance(serverService);
25+
bind(CommandContextProvider.class).toInstance(commandContextProvider);
26+
}
27+
}

bot/src/main/java/de/chojo/gamejam/api/Api.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
package de.chojo.gamejam.api;
88

99
import de.chojo.gamejam.api.exception.InterruptException;
10-
import de.chojo.gamejam.api.v1.Server;
10+
import de.chojo.gamejam.api.v1.ServerRoute;
1111
import de.chojo.gamejam.api.v1.Teams;
1212
import de.chojo.gamejam.api.v1.Users;
1313
import de.chojo.gamejam.configuration.Configuration;
@@ -95,7 +95,7 @@ private void routes() {
9595
users.routes();
9696
var teams = new Teams(shardManager, guilds);
9797
teams.routes();
98-
Server server = new Server(serverService, this.teams);
98+
ServerRoute server = new ServerRoute(serverService, this.teams);
9999
server.routes();
100100
});
101101

bot/src/main/java/de/chojo/gamejam/api/v1/Server.java renamed to bot/src/main/java/de/chojo/gamejam/api/v1/ServerRoute.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@
2828
import static io.javalin.apibuilder.ApiBuilder.post;
2929
import static org.slf4j.LoggerFactory.getLogger;
3030

31-
public class Server {
31+
public class ServerRoute {
3232
private final ServerService serverService;
3333
private final Teams teams;
34-
private static final Logger log = getLogger(Server.class);
34+
private static final Logger log = getLogger(ServerRoute.class);
3535

36-
public Server(ServerService serverService, Teams teams) {
36+
public ServerRoute(ServerService serverService, Teams teams) {
3737
this.serverService = serverService;
3838
this.teams = teams;
3939
}
@@ -73,7 +73,7 @@ public void routes() {
7373
}
7474
)
7575
private void handle(@NotNull Context ctx) {
76-
String token = ctx.pathParam("token");
76+
/*String token = ctx.pathParam("token");
7777
Optional<Team> team = teams.byToken(token);
7878
if (team.isEmpty()) {
7979
ctx.status(HttpStatus.NOT_FOUND);
@@ -112,5 +112,7 @@ private void handle(@NotNull Context ctx) {
112112
} else if (teamServer.isRunning()) {
113113
teamServer.send("say Plugin Updated");
114114
}
115+
116+
*/
115117
}
116118
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* SPDX-License-Identifier: AGPL-3.0-only
3+
*
4+
* Copyright (C) 2022 DevCord Team and Contributor
5+
*/
6+
7+
package de.chojo.gamejam.commands.jamadmin;
8+
9+
import com.google.inject.Inject;
10+
import de.chojo.gamejam.server.CommandContextProvider;
11+
import io.github.kaktushose.jdac.annotations.i18n.Bundle;
12+
import io.github.kaktushose.jdac.annotations.interactions.Command;
13+
import io.github.kaktushose.jdac.annotations.interactions.Interaction;
14+
import io.github.kaktushose.jdac.annotations.interactions.Param;
15+
import io.github.kaktushose.jdac.dispatching.events.interactions.CommandEvent;
16+
17+
@Bundle("locale")
18+
@Interaction
19+
public final class ChangeVotesCommand {
20+
private final CommandContextProvider commandContextProvider;
21+
22+
@Inject
23+
public ChangeVotesCommand(CommandContextProvider commandContextProvider) {
24+
this.commandContextProvider = commandContextProvider;
25+
}
26+
27+
@Command("jamdamin changevotes")
28+
public void onCommand(CommandEvent event, @Param("voting") boolean voting) {
29+
var guilds = commandContextProvider.guilds();
30+
var jam = guilds.guild(event).jams().activeJam();
31+
if (jam.isEmpty()) {
32+
event.reply("error.noactivejam");
33+
return;
34+
}
35+
jam.get().state().voting(voting);
36+
event.reply("asd");
37+
}
38+
}

bot/src/main/java/de/chojo/gamejam/commands/jamadmin/JamAdmin.java

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)