add user lookup command
All checks were successful
Deploy to Dokku / docker (ubuntu-latest) (push) Successful in 41s
All checks were successful
Deploy to Dokku / docker (ubuntu-latest) (push) Successful in 41s
This commit is contained in:
parent
96e675a6be
commit
a0e0b82f40
21
src/main/java/cc/fascinated/bat/common/LongUtils.java
Normal file
21
src/main/java/cc/fascinated/bat/common/LongUtils.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package cc.fascinated.bat.common;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Fascinated (fascinated7)
|
||||||
|
*/
|
||||||
|
public class LongUtils {
|
||||||
|
/**
|
||||||
|
* Checks if a string is a long
|
||||||
|
*
|
||||||
|
* @param string the string to check
|
||||||
|
* @return if the string is a long
|
||||||
|
*/
|
||||||
|
public static boolean isLong(String string) {
|
||||||
|
try {
|
||||||
|
Long.parseLong(string);
|
||||||
|
return true;
|
||||||
|
} catch (NumberFormatException exception) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,7 @@ package cc.fascinated.bat.features.base;
|
|||||||
import cc.fascinated.bat.command.Category;
|
import cc.fascinated.bat.command.Category;
|
||||||
import cc.fascinated.bat.features.Feature;
|
import cc.fascinated.bat.features.Feature;
|
||||||
import cc.fascinated.bat.features.base.commands.botadmin.premium.PremiumAdminCommand;
|
import cc.fascinated.bat.features.base.commands.botadmin.premium.PremiumAdminCommand;
|
||||||
|
import cc.fascinated.bat.features.base.commands.discord.LookupUserCommand;
|
||||||
import cc.fascinated.bat.features.base.commands.fun.EightBallCommand;
|
import cc.fascinated.bat.features.base.commands.fun.EightBallCommand;
|
||||||
import cc.fascinated.bat.features.base.commands.fun.image.ImageCommand;
|
import cc.fascinated.bat.features.base.commands.fun.image.ImageCommand;
|
||||||
import cc.fascinated.bat.features.base.commands.general.*;
|
import cc.fascinated.bat.features.base.commands.general.*;
|
||||||
@ -41,5 +42,6 @@ public class BaseFeature extends Feature {
|
|||||||
super.registerCommand(commandService, context.getBean(ImageCommand.class));
|
super.registerCommand(commandService, context.getBean(ImageCommand.class));
|
||||||
super.registerCommand(commandService, context.getBean(FeatureCommand.class));
|
super.registerCommand(commandService, context.getBean(FeatureCommand.class));
|
||||||
super.registerCommand(commandService, context.getBean(EightBallCommand.class));
|
super.registerCommand(commandService, context.getBean(EightBallCommand.class));
|
||||||
|
super.registerCommand(commandService, context.getBean(LookupUserCommand.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
80
src/main/java/cc/fascinated/bat/features/base/commands/discord/LookupUserCommand.java
Normal file
80
src/main/java/cc/fascinated/bat/features/base/commands/discord/LookupUserCommand.java
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package cc.fascinated.bat.features.base.commands.discord;
|
||||||
|
|
||||||
|
import cc.fascinated.bat.command.BatCommand;
|
||||||
|
import cc.fascinated.bat.command.CommandInfo;
|
||||||
|
import cc.fascinated.bat.common.EmbedDescriptionBuilder;
|
||||||
|
import cc.fascinated.bat.common.EmbedUtils;
|
||||||
|
import cc.fascinated.bat.common.LongUtils;
|
||||||
|
import cc.fascinated.bat.model.BatGuild;
|
||||||
|
import cc.fascinated.bat.model.BatUser;
|
||||||
|
import cc.fascinated.bat.service.DiscordService;
|
||||||
|
import lombok.NonNull;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import net.dv8tion.jda.api.entities.User;
|
||||||
|
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
|
||||||
|
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
|
||||||
|
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||||
|
import net.dv8tion.jda.api.interactions.commands.SlashCommandInteraction;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Fascinated (fascinated7)
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@CommandInfo(name = "lookupuser", description = "Lookup a user")
|
||||||
|
public class LookupUserCommand extends BatCommand {
|
||||||
|
public LookupUserCommand() {
|
||||||
|
super.addOption(OptionType.STRING, "id", "The id of the user", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(BatGuild guild, @NonNull BatUser user, @NonNull MessageChannel channel, Member member, @NonNull SlashCommandInteraction event) {
|
||||||
|
OptionMapping idOption = event.getOption("id");
|
||||||
|
if (idOption == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String id = idOption.getAsString();
|
||||||
|
if (!LongUtils.isLong(id)) {
|
||||||
|
event.replyEmbeds(EmbedUtils.errorEmbed()
|
||||||
|
.setDescription("You need to provide a valid user id")
|
||||||
|
.build())
|
||||||
|
.setEphemeral(true)
|
||||||
|
.queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DiscordService.JDA.retrieveUserById(id).queue(target -> {
|
||||||
|
if (target == null) {
|
||||||
|
event.replyEmbeds(EmbedUtils.errorEmbed()
|
||||||
|
.setDescription("User `%s` not found".formatted(id))
|
||||||
|
.build())
|
||||||
|
.setEphemeral(true)
|
||||||
|
.queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The flags of the user (eg. Discord Partner, Hypesquad Events, etc.)
|
||||||
|
StringBuilder flags = new StringBuilder();
|
||||||
|
for (User.UserFlag flag : target.getFlags()) {
|
||||||
|
flags.append(flag.getName()).append(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
target.retrieveProfile().queue(profile -> event.replyEmbeds(EmbedUtils.genericEmbed()
|
||||||
|
.setDescription(new EmbedDescriptionBuilder("User Lookup")
|
||||||
|
.appendLine("Name: `%s`".formatted(target.getGlobalName()), true)
|
||||||
|
.appendLine("Username: `%s`".formatted(target.getName()), true)
|
||||||
|
.appendLine("ID: `%s`".formatted(target.getId()), true)
|
||||||
|
.appendLine("Flags: `%s`".formatted(flags.toString().isEmpty() ? "None" : flags.substring(0, flags.length() - 2)), true)
|
||||||
|
.appendLine("Joined Discord: <t:%s:R>".formatted(target.getTimeCreated().toEpochSecond()), true)
|
||||||
|
.appendLine("Avatar: %s".formatted(target.getAvatar() == null ? "None"
|
||||||
|
: "[click here](%s)".formatted(target.getAvatar().getUrl(4096))), true)
|
||||||
|
.appendLine("Banner: %s".formatted(profile.getBanner() == null ? "None"
|
||||||
|
: "[click here](%s)".formatted(profile.getBanner().getUrl(4096))), true)
|
||||||
|
.build())
|
||||||
|
.setThumbnail(target.getAvatar() == null ? null : target.getAvatar().getUrl(4096))
|
||||||
|
.build())
|
||||||
|
.setEphemeral(true)
|
||||||
|
.queue());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user