Add .queue() to embed action in CommandSyncNitro for proper execution
This commit is contained in:
parent
1bd6602421
commit
b0d3498d1c
|
|
@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.JDA;
|
import net.dv8tion.jda.api.JDA;
|
||||||
import net.dv8tion.jda.api.entities.Guild;
|
import net.dv8tion.jda.api.entities.Guild;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import net.dv8tion.jda.api.entities.Role;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
import net.dv8tion.jda.api.interactions.InteractionContextType;
|
import net.dv8tion.jda.api.interactions.InteractionContextType;
|
||||||
|
|
@ -55,13 +56,22 @@ public class CommandSyncNitro extends DiscordCommand {
|
||||||
|
|
||||||
ReplyCallbackAction replyCallbackAction = event.deferReply(true);
|
ReplyCallbackAction replyCallbackAction = event.deferReply(true);
|
||||||
|
|
||||||
QueriesUserByRole.getUserIdsByRole("alpha").thenAcceptAsync(optionalUserIdList -> {
|
QueriesUserByRole.getUserIdsByRole("nitro").thenAcceptAsync(optionalUserIdList -> {
|
||||||
if (optionalUserIdList.isEmpty()) {
|
if (optionalUserIdList.isEmpty()) {
|
||||||
replyCallbackAction.setEmbeds(Util.genericErrorEmbed("Error", "No users found."))
|
replyCallbackAction.setEmbeds(Util.genericErrorEmbed("Error", "No users found."))
|
||||||
.setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure);
|
.setEphemeral(true).queue(RestAction.getDefaultSuccess(), Util::handleFailure);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
checkAllMembers(optionalUserIdList.get(), guildById, replyCallbackAction);
|
checkAllMembers(optionalUserIdList.get(), guildById, replyCallbackAction);
|
||||||
|
}, error -> replyCallbackAction
|
||||||
|
.setEmbeds(Util.genericErrorEmbed("Error", "Unable to retrieve user list."))
|
||||||
|
.queue(RestAction.getDefaultSuccess(), Util::handleFailure));
|
||||||
|
|
||||||
|
Role roleById = guildById.getRoleById(585557866275012633L);
|
||||||
|
guildById.getMembersWithRoles(roleById).forEach(member -> {
|
||||||
|
QueriesUserDiscordId.addRoleIfMissing(member.getIdLong(), "nitro").thenAccept(success -> {
|
||||||
|
log.info("Added nitro role to user {}.", member.getIdLong());
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,7 +84,8 @@ public class CommandSyncNitro extends DiscordCommand {
|
||||||
Member member = guildById.getMemberById(userId);
|
Member member = guildById.getMemberById(userId);
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
guildById.retrieveMemberById(userId)
|
guildById.retrieveMemberById(userId)
|
||||||
.queue(retrievedMember -> checkMember(retrievedMember, userId));
|
.queue(retrievedMember -> checkMember(retrievedMember, userId),
|
||||||
|
error -> checkMember(null, userId));
|
||||||
} else {
|
} else {
|
||||||
checkMember(member, userId);
|
checkMember(member, userId);
|
||||||
}
|
}
|
||||||
|
|
@ -89,14 +100,18 @@ public class CommandSyncNitro extends DiscordCommand {
|
||||||
|
|
||||||
private void checkMember(Member member, long userId) {
|
private void checkMember(Member member, long userId) {
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
QueriesUserDiscordId.removeLinkedUserByDiscordId(userId);
|
QueriesUserDiscordId.removeLinkedUserByDiscordId(userId).thenAccept(success -> {
|
||||||
|
log.info("User {} not found in guild. Removed from database.", userId);
|
||||||
|
});
|
||||||
log.info("User {} not found in guild. Removing from database.", userId);
|
log.info("User {} not found in guild. Removing from database.", userId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean hasNitro = member.getRoles().stream().anyMatch(role -> role.getIdLong() == 585557866275012633L);
|
boolean hasNitro = member.getRoles().stream().anyMatch(role -> role.getIdLong() == 585557866275012633L);
|
||||||
if (!hasNitro) {
|
if (!hasNitro) {
|
||||||
log.info("User {} does not have nitro. Removing from database.", userId);
|
log.info("User {} does not have nitro. Removing nitro role from database.", userId);
|
||||||
QueriesUserDiscordId.removeRole(userId, "nitro");
|
QueriesUserDiscordId.removeRole(userId, "nitro").thenAccept(success -> {
|
||||||
|
log.info("User {} does not have nitro. Removed nitro role from database.", userId);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package com.alttd.database.queries;
|
||||||
|
|
||||||
import com.alttd.database.Database;
|
import com.alttd.database.Database;
|
||||||
import com.alttd.util.Logger;
|
import com.alttd.util.Logger;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
|
@ -43,7 +44,7 @@ public class QueriesUserDiscordId {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeRole(long userId, String role) {
|
public static CompletableFuture<Void> removeRole(long userId, String role) {
|
||||||
String sql = """
|
String sql = """
|
||||||
DELETE FROM account_roles
|
DELETE FROM account_roles
|
||||||
WHERE uuid IN (
|
WHERE uuid IN (
|
||||||
|
|
@ -54,13 +55,40 @@ public class QueriesUserDiscordId {
|
||||||
AND role_name = ?
|
AND role_name = ?
|
||||||
""";
|
""";
|
||||||
|
|
||||||
try {
|
return CompletableFuture.runAsync(() -> {
|
||||||
PreparedStatement preparedStatement = Database.getDatabase().getConnection().prepareStatement(sql);
|
try {
|
||||||
preparedStatement.setLong(1, userId);
|
PreparedStatement preparedStatement = Database.getDatabase().getConnection().prepareStatement(sql);
|
||||||
preparedStatement.setString(2, role);
|
preparedStatement.setLong(1, userId);
|
||||||
preparedStatement.executeUpdate();
|
preparedStatement.setString(2, role);
|
||||||
} catch (SQLException exception) {
|
preparedStatement.executeUpdate();
|
||||||
Logger.altitudeLogs.error(exception);
|
} catch (SQLException exception) {
|
||||||
}
|
Logger.altitudeLogs.error(exception);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CompletableFuture<Void> addRoleIfMissing(long userId, String role) {
|
||||||
|
String sql = """
|
||||||
|
INSERT INTO account_roles (uuid, role_name)
|
||||||
|
SELECT player_uuid, ?
|
||||||
|
FROM linked_accounts
|
||||||
|
WHERE discord_id = ?
|
||||||
|
AND NOT EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM account_roles
|
||||||
|
WHERE uuid = player_uuid
|
||||||
|
AND role_name = ?)
|
||||||
|
""";
|
||||||
|
return CompletableFuture.runAsync(() -> {
|
||||||
|
try {
|
||||||
|
PreparedStatement preparedStatement = Database.getDatabase().getConnection().prepareStatement(sql);
|
||||||
|
preparedStatement.setString(1, role);
|
||||||
|
preparedStatement.setLong(2, userId);
|
||||||
|
preparedStatement.setString(3, role);
|
||||||
|
preparedStatement.executeUpdate();
|
||||||
|
} catch (SQLException exception) {
|
||||||
|
Logger.altitudeLogs.error(exception);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user