use of net.kodehawa.mantarobot.core.modules.commands.base.ITreeCommand in project MantaroBot by Mantaro.
the class MoneyCmds method richest.
@Subscribe
public void richest(CommandRegistry cr) {
final RateLimiter rateLimiter = new RateLimiter(TimeUnit.SECONDS, 10);
final String pattern = ":g$";
ITreeCommand leaderboards = (ITreeCommand) cr.register("leaderboard", new TreeCommand(Category.CURRENCY) {
@Override
public Command defaultTrigger(GuildMessageReceivedEvent event, String mainCommand, String commandName) {
return new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
if (!handleDefaultRatelimit(rateLimiter, event.getAuthor(), event))
return;
OrderBy template = r.table("players").orderBy().optArg("index", r.desc("money"));
Cursor<Map> c1 = getGlobalRichest(template, pattern);
List<Map> c = c1.toList();
c1.close();
event.getChannel().sendMessage(baseEmbed(event, "Money leaderboard (Top 10)", event.getJDA().getSelfUser().getEffectiveAvatarUrl()).setDescription(c.stream().map(map -> Pair.of(MantaroBot.getInstance().getUserById(map.get("id").toString().split(":")[0]), map.get("money").toString())).filter(p -> Objects.nonNull(p.getKey())).map(p -> String.format("%s**%s#%s** - $%s", EmoteReference.MARKER, p.getKey().getName(), p.getKey().getDiscriminator(), p.getValue())).collect(Collectors.joining("\n"))).build()).queue();
}
};
}
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "Leaderboard").setDescription("**Returns the leaderboard.**").addField("Usage", "`~>leaderboard` - **Returns the money leaderboard.**\n" + "`~>leaderboard rep` - **Returns the reputation leaderboard.**\n" + "`~>leaderboard lvl` - **Returns the level leaderboard.**\n" + "~>leaderboard streak - **Returns the daily streak leaderboard.", false).build();
}
});
leaderboards.addSubCommand("lvl", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
if (!handleDefaultRatelimit(rateLimiter, event.getAuthor(), event))
return;
Cursor<Map> m;
try (Connection conn = Utils.newDbConnection()) {
m = r.table("players").orderBy().optArg("index", r.desc("level")).filter(player -> player.g("id").match(pattern)).map(player -> player.pluck("id", "level", r.hashMap("data", "experience"))).limit(10).run(conn, OptArgs.of("read_mode", "outdated"));
}
List<Map> c = m.toList();
m.close();
event.getChannel().sendMessage(baseEmbed(event, "Level leaderboard (Top 10)", event.getJDA().getSelfUser().getEffectiveAvatarUrl()).setDescription(c.stream().map(map -> Pair.of(MantaroBot.getInstance().getUserById(map.get("id").toString().split(":")[0]), map.get("level").toString() + "\n - Experience: **" + ((Map) map.get("data")).get("experience") + "**")).filter(p -> Objects.nonNull(p.getKey())).map(p -> String.format("%s**%s#%s** - %s", EmoteReference.MARKER, p.getKey().getName(), p.getKey().getDiscriminator(), p.getValue())).collect(Collectors.joining("\n"))).build()).queue();
}
});
leaderboards.addSubCommand("rep", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
Cursor<Map> m;
try (Connection conn = Utils.newDbConnection()) {
m = r.table("players").orderBy().optArg("index", r.desc("reputation")).filter(player -> player.g("id").match(pattern)).map(player -> player.pluck("id", "reputation")).limit(10).run(conn, OptArgs.of("read_mode", "outdated"));
}
List<Map> c = m.toList();
m.close();
event.getChannel().sendMessage(baseEmbed(event, "Reputation leaderboard (Top 10)", event.getJDA().getSelfUser().getEffectiveAvatarUrl()).setDescription(c.stream().map(map -> Pair.of(MantaroBot.getInstance().getUserById(map.get("id").toString().split(":")[0]), map.get("reputation").toString())).filter(p -> Objects.nonNull(p.getKey())).map(p -> String.format("%s**%s#%s** - %s", EmoteReference.MARKER, p.getKey().getName(), p.getKey().getDiscriminator(), p.getValue())).collect(Collectors.joining("\n"))).build()).queue();
}
});
leaderboards.addSubCommand("streak", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
Cursor<Map> m;
try (Connection conn = Utils.newDbConnection()) {
m = r.table("players").orderBy().optArg("index", r.desc("userDailyStreak")).filter(player -> player.g("id").match(pattern)).map(player -> player.pluck("id", r.hashMap("data", "dailyStrike"))).limit(10).run(conn, OptArgs.of("read_mode", "outdated"));
}
List<Map> c = m.toList();
m.close();
event.getChannel().sendMessage(baseEmbed(event, "Daily streak leaderboard (Top 10)", event.getJDA().getSelfUser().getEffectiveAvatarUrl()).setDescription(c.stream().map(map -> Pair.of(MantaroBot.getInstance().getUserById(map.get("id").toString().split(":")[0]), ((HashMap) (map.get("data"))).get("dailyStrike").toString())).filter(p -> Objects.nonNull(p.getKey())).map(p -> String.format("%s**%s#%s** - %sx", EmoteReference.MARKER, p.getKey().getName(), p.getKey().getDiscriminator(), p.getValue())).collect(Collectors.joining("\n"))).build()).queue();
}
});
// TODO enable in 4.9
/*
leaderboards.addSubCommand("localxp", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
List<Map> l;
try(Connection conn = Utils.newDbConnection()) {
l = r.table("guilds")
.get(event.getGuild().getId())
.getField("data")
.getField("localPlayerExperience")
.run(conn, OptArgs.of("read_mode", "outdated"));
}
l.sort(Comparator.<Map>comparingLong(o -> (long) o.get("experience")).reversed());
event.getChannel().sendMessage(
baseEmbed(event,
"Local level leaderboard", event.getJDA().getSelfUser().getEffectiveAvatarUrl()
).setDescription(l.stream()
.map(map -> Pair.of(MantaroBot.getInstance().getUserById(map.get("userId").toString()), map.get("level").toString() +
"\n - Experience: **" + map.get("experience") + "**\n"))
.map(p -> String.format("%s**%s** - %s", EmoteReference.MARKER,
p == null ? "User left guild" : p.getKey().getName() + "#" + p.getKey().getDiscriminator(), p.getValue()))
.collect(Collectors.joining("\n"))
).build()
).queue();
}
});
leaderboards.createSubCommandAlias("localxp", "local");
*/
leaderboards.createSubCommandAlias("rep", "reputation");
leaderboards.createSubCommandAlias("lvl", "level");
leaderboards.createSubCommandAlias("streak", "daily");
cr.registerAlias("leaderboard", "richest");
}
use of net.kodehawa.mantarobot.core.modules.commands.base.ITreeCommand in project MantaroBot by Mantaro.
the class OsuStatsCmd method osustats.
@Subscribe
public void osustats(CommandRegistry cr) {
ITreeCommand osuCommand = (SimpleTreeCommand) cr.register("osustats", new SimpleTreeCommand(Category.GAMES) {
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "osu! command").setDescription("**Retrieves information from osu! (Players and scores)**.").addField("Usage", "`~>osu best <player>` - **Retrieves best scores of the user specified in the specified game mode**.\n" + "`~>osu recent <player>` - **Retrieves recent scores of the user specified in the specified game mode.**\n" + "`~>osu user <player>` - **Retrieves information about a osu! player**.\n", false).addField("Parameters", "`player` - **The osu! player to look info for.**", false).build();
}
});
osuCommand.addSubCommand("best", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
event.getChannel().sendMessage(EmoteReference.STOPWATCH + "Retrieving information from osu! server...").queue(sentMessage -> {
Future<String> task = pool.submit(() -> best(content));
try {
sentMessage.editMessage(task.get(16, TimeUnit.SECONDS)).queue();
} catch (Exception e) {
if (e instanceof TimeoutException) {
task.cancel(true);
sentMessage.editMessage(EmoteReference.ERROR + "The osu! api seems to be taking a nap. Maybe try again later?").queue();
} else {
SentryHelper.captureException("Error retrieving results from osu!API", e, OsuStatsCmd.class);
}
}
});
}
});
osuCommand.addSubCommand("recent", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
event.getChannel().sendMessage(EmoteReference.STOPWATCH + "Retrieving information from server...").queue(sentMessage -> {
Future<String> task = pool.submit(() -> recent(content));
try {
sentMessage.editMessage(task.get(16, TimeUnit.SECONDS)).queue();
} catch (Exception e) {
if (e instanceof TimeoutException) {
task.cancel(true);
sentMessage.editMessage(EmoteReference.ERROR + "The osu! api seems to be taking a nap. Maybe try again later?").queue();
} else
log.warn("Exception thrown while fetching data", e);
}
});
}
});
osuCommand.addSubCommand("user", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
event.getChannel().sendMessage(user(content)).queue();
}
});
cr.registerAlias("osustats", "osu");
}
use of net.kodehawa.mantarobot.core.modules.commands.base.ITreeCommand in project MantaroBot by Mantaro.
the class PlayerCmds method badges.
@Subscribe
public void badges(CommandRegistry cr) {
final Random r = new Random();
ITreeCommand badgeCommand = (ITreeCommand) cr.register("badges", new TreeCommand(Category.CURRENCY) {
@Override
public Command defaultTrigger(GuildMessageReceivedEvent event, String mainCommand, String commandName) {
return new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
Map<String, Optional<String>> t = StringUtils.parse(content.isEmpty() ? new String[] {} : content.split("\\s+"));
content = Utils.replaceArguments(t, content, "brief");
Member member = Utils.findMember(event, event.getMember(), content);
if (member == null)
return;
User toLookup = member.getUser();
Player player = MantaroData.db().getPlayer(toLookup);
PlayerData playerData = player.getData();
if (!t.isEmpty() && t.containsKey("brief")) {
event.getChannel().sendMessage(String.format("**%s's badges:**\n%s", member.getEffectiveName(), playerData.getBadges().stream().map(b -> "*" + b.display + "*").collect(Collectors.joining(", ")))).queue();
return;
}
List<Badge> badges = playerData.getBadges();
Collections.sort(badges);
// Show the message that tells the person that they can get a free badge for upvoting mantaro one out of 3 times they use this command.
// The message stops appearing when they upvote.
String toShow = "If you think you got a new badge and it doesn't appear here, please use `~>profile` and then run this command again.\n" + "Use `~>badges info <badge name>` to get more information about a badge.\n" + ((r.nextInt(3) == 0 && !playerData.hasBadge(Badge.UPVOTER) ? "**You can get a free badge for " + "[up-voting Mantaro on discordbots.org](https://discordbots.org/bot/mantaro)!** (It might take some minutes to process)\n\n" : "\n")) + badges.stream().map(badge -> String.format("**%s:** *%s*", badge, badge.description)).collect(Collectors.joining("\n"));
if (toShow.isEmpty())
toShow = "No badges to show (yet!)";
List<String> parts = DiscordUtils.divideString(MessageEmbed.TEXT_MAX_LENGTH, toShow);
DiscordUtils.list(event, 30, false, (current, max) -> new EmbedBuilder().setAuthor("Badges achieved by " + toLookup.getName()).setColor(event.getMember().getColor() == null ? Color.PINK : event.getMember().getColor()).setThumbnail(toLookup.getEffectiveAvatarUrl()), parts);
}
};
}
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "Badge list").setDescription("**Shows your (or another person)'s badges**\n" + "If you want to check out the badges of another person just mention them.\n" + "`~>badges info <name>` - Shows info about a badge.\n" + "You can use `~>badges -brief` to get a brief versions of the badge showcase.").build();
}
});
badgeCommand.addSubCommand("info", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
if (content.isEmpty()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You need to specify a badge to see the info of.").queue();
return;
}
Badge badge = Badge.lookupFromString(content);
if (badge == null) {
event.getChannel().sendMessage(EmoteReference.ERROR + "There's no such badge...").queue();
return;
}
Player p = MantaroData.db().getPlayer(event.getAuthor());
Message message = new MessageBuilder().setEmbed(new EmbedBuilder().setAuthor("Badge information for " + badge.display).setDescription(String.join("\n", EmoteReference.BLUE_SMALL_MARKER + "**Name:** " + badge.display, EmoteReference.BLUE_SMALL_MARKER + "**Description:** " + badge.description, EmoteReference.BLUE_SMALL_MARKER + "**Achieved:** " + p.getData().getBadges().stream().anyMatch(b -> b == badge))).setThumbnail("attachment://icon.png").setColor(Color.CYAN).build()).build();
event.getChannel().sendFile(badge.icon, "icon.png", message).queue();
}
});
}
use of net.kodehawa.mantarobot.core.modules.commands.base.ITreeCommand in project MantaroBot by Mantaro.
the class PlayerCmds method profile.
@Subscribe
public void profile(CommandRegistry cr) {
ITreeCommand profileCommand = (TreeCommand) cr.register("profile", new TreeCommand(Category.CURRENCY) {
@Override
public Command defaultTrigger(GuildMessageReceivedEvent event, String mainCommand, String commandName) {
return new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
User userLooked = event.getAuthor();
Player player = MantaroData.db().getPlayer(userLooked);
UserData user = MantaroData.db().getUser(event.getMember()).getData();
Member memberLooked = event.getMember();
List<Member> found = FinderUtil.findMembers(content, event.getGuild());
if (found.isEmpty() && !content.isEmpty()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Didn't find any member with your search criteria :(").queue();
return;
}
if (found.size() > 1 && !content.isEmpty()) {
event.getChannel().sendMessage(EmoteReference.THINKING + "Too many members found, maybe refine your search? (ex. use name#discriminator)\n" + "**Members found:** " + found.stream().map(m -> m.getUser().getName() + "#" + m.getUser().getDiscriminator()).collect(Collectors.joining(", "))).queue();
return;
}
if (found.size() == 1 && !content.isEmpty()) {
userLooked = found.get(0).getUser();
memberLooked = found.get(0);
if (userLooked.isBot()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Bots don't have profiles.").queue();
return;
}
user = MantaroData.db().getUser(userLooked).getData();
player = MantaroData.db().getPlayer(memberLooked);
}
User marriedTo = (player.getData().getMarriedWith() == null || player.getData().getMarriedWith().isEmpty()) ? null : MantaroBot.getInstance().getUserById(player.getData().getMarriedWith());
PlayerData playerData = player.getData();
Inventory inv = player.getInventory();
// start of badge assigning
Guild mh = MantaroBot.getInstance().getGuildById("213468583252983809");
Member mhMember = mh == null ? null : mh.getMemberById(memberLooked.getUser().getId());
boolean saveAfter = false;
if (player.getMoney() > 7526527671L && playerData.addBadgeIfAbsent(Badge.ALTERNATIVE_WORLD))
saveAfter = true;
if (MantaroData.config().get().isOwner(userLooked) && playerData.addBadgeIfAbsent(Badge.DEVELOPER))
saveAfter = true;
if (inv.asList().stream().anyMatch(stack -> stack.getAmount() == 5000) && playerData.addBadgeIfAbsent(Badge.SHOPPER))
saveAfter = true;
if (inv.asList().stream().anyMatch(stack -> stack.getItem().equals(Items.CHRISTMAS_TREE_SPECIAL) || stack.getItem().equals(Items.BELL_SPECIAL)) && playerData.addBadgeIfAbsent(Badge.CHRISTMAS))
saveAfter = true;
if (MantaroBot.getInstance().getShardedMantaro().getDiscordBotsUpvoters().contains(userLooked.getIdLong()) && playerData.addBadgeIfAbsent(Badge.UPVOTER))
saveAfter = true;
if (player.getLevel() >= 10 && playerData.addBadgeIfAbsent(Badge.WALKER))
saveAfter = true;
if (player.getLevel() >= 50 && playerData.addBadgeIfAbsent(Badge.RUNNER))
saveAfter = true;
if (player.getLevel() >= 100 && playerData.addBadgeIfAbsent(Badge.FAST_RUNNER))
saveAfter = true;
if (player.getLevel() >= 150 && playerData.addBadgeIfAbsent(Badge.MARATHON_RUNNER))
saveAfter = true;
if (player.getLevel() >= 200 && playerData.addBadgeIfAbsent(Badge.MARATHON_WINNER))
saveAfter = true;
if (playerData.getMarketUsed() > 1000 && playerData.addBadgeIfAbsent(Badge.COMPULSIVE_BUYER))
saveAfter = true;
if (mhMember != null && mhMember.getRoles().stream().anyMatch(r -> r.getIdLong() == 406920476259123201L) && playerData.addBadgeIfAbsent(Badge.HELPER_2))
saveAfter = true;
if (mhMember != null && mhMember.getRoles().stream().anyMatch(r -> r.getIdLong() == 290257037072531466L || r.getIdLong() == 290902183300431872L) && playerData.addBadgeIfAbsent(Badge.DONATOR_2))
saveAfter = true;
if (saveAfter)
player.saveAsync();
// end of badge assigning
List<Badge> badges = playerData.getBadges();
Collections.sort(badges);
String displayBadges = badges.stream().map(Badge::getUnicode).limit(5).collect(Collectors.joining(" "));
applyBadge(event.getChannel(), badges.isEmpty() ? null : (playerData.getMainBadge() == null ? badges.get(0) : playerData.getMainBadge()), userLooked, baseEmbed(event, (marriedTo == null || !player.getInventory().containsItem(Items.RING) ? "" : EmoteReference.RING) + memberLooked.getEffectiveName() + "'s Profile", userLooked.getEffectiveAvatarUrl()).setThumbnail(userLooked.getEffectiveAvatarUrl()).setDescription((player.getData().isShowBadge() ? (badges.isEmpty() ? "" : String.format("**%s**\n", (playerData.getMainBadge() == null ? badges.get(0) : playerData.getMainBadge()))) : "") + (player.getData().getDescription() == null ? "No description set" : player.getData().getDescription())).addField(EmoteReference.DOLLAR + "Credits", "$ " + player.getMoney(), true).addField(EmoteReference.ZAP + "Level", player.getLevel() + " (Experience: " + player.getData().getExperience() + ")", true).addField(EmoteReference.REP + "Reputation", String.valueOf(player.getReputation()), true).addField(EmoteReference.POPPER + "Birthday", user.getBirthday() != null ? user.getBirthday().substring(0, 5) : "Not specified.", true).addField(EmoteReference.HEART + "Married with", marriedTo == null ? "Nobody." : marriedTo.getName() + "#" + marriedTo.getDiscriminator(), false).addField(EmoteReference.POUCH + "Inventory", ItemStack.toString(inv.asList()), false).addField(EmoteReference.HEART + "Top 5 Badges", displayBadges.isEmpty() ? "No badges (yet!)" : displayBadges, false).setFooter("User's timezone: " + (user.getTimezone() == null ? "No timezone set." : user.getTimezone()) + " | " + "Requested by " + event.getAuthor().getName(), null));
}
};
}
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "Profile command.").setDescription("**Retrieves your current user profile.**").addField("Usage", "- To retrieve your profile, `~>profile`\n" + "- To change your description do `~>profile description set <description>`\n" + " -- To clear it, just do `~>profile description clear`\n" + "- To set your timezone do `~>profile timezone <timezone>`\n" + "- To set your display badge use `~>profile displaybadge` and `~>profile displaybadge reset` to reset it.\n" + " -- You can also use `~>profile displaybadge none` to display no badge on your profile.\n" + "**The profile only shows the 5 most important badges!.** Use `~>badges` to get a complete list.", false).build();
}
});
profileCommand.addSubCommand("timezone", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
DBUser dbUser = MantaroData.db().getUser(event.getAuthor());
String[] args = content.split(" ");
if (args.length < 1) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You need to specify the timezone.").queue();
return;
}
String timezone = args[0];
if (timezone.equalsIgnoreCase("reset")) {
dbUser.getData().setTimezone(null);
dbUser.saveAsync();
event.getChannel().sendMessage(EmoteReference.CORRECT + "Reset timezone.").queue();
return;
}
if (!Utils.isValidTimeZone(timezone)) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Invalid timezone.").queue();
return;
}
try {
UtilsCmds.dateGMT(event.getGuild(), timezone);
} catch (Exception e) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Not a valid timezone.").queue();
return;
}
dbUser.getData().setTimezone(timezone);
dbUser.saveAsync();
event.getChannel().sendMessage(String.format("%sSaved timezone, your profile timezone is now: **%s**", EmoteReference.CORRECT, timezone)).queue();
}
});
profileCommand.addSubCommand("description", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
String[] args = content.split(" ");
User author = event.getAuthor();
Player player = MantaroData.db().getPlayer(author);
if (args.length == 0) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You need to provide an argument! (set or remove)\n" + "for example, ~>profile description set Hi there!").queue();
return;
}
if (args[0].equals("set")) {
int MAX_LENGTH = 300;
if (MantaroData.db().getUser(author).isPremium())
MAX_LENGTH = 500;
String content1 = SPLIT_PATTERN.split(content, 2)[1];
if (content1.length() > MAX_LENGTH) {
event.getChannel().sendMessage(EmoteReference.ERROR + "The description is too long! `(Limit of 300 characters for everyone and 500 for premium users)`").queue();
return;
}
player.getData().setDescription(content1);
event.getChannel().sendMessage(EmoteReference.POPPER + "Set description to: **" + content1 + "**\n" + "Check your shiny new profile with `~>profile`").queue();
player.save();
return;
}
if (args[1].equals("clear")) {
player.getData().setDescription(null);
event.getChannel().sendMessage(EmoteReference.CORRECT + "Successfully cleared description.").queue();
player.save();
}
}
});
profileCommand.addSubCommand("displaybadge", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
String[] args = content.split(" ");
if (args.length == 0) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You need to specify your main badge!").queue();
return;
}
Player player = MantaroData.db().getPlayer(event.getAuthor());
PlayerData data = player.getData();
if (args[0].equalsIgnoreCase("none")) {
data.setShowBadge(false);
event.getChannel().sendMessage(EmoteReference.CORRECT + "No badge will show on the top of your profile now!").queue();
player.saveAsync();
return;
}
if (args[0].equalsIgnoreCase("reset")) {
data.setMainBadge(null);
data.setShowBadge(true);
event.getChannel().sendMessage(EmoteReference.CORRECT + "Your display badge is now the most important one.").queue();
player.saveAsync();
return;
}
Badge badge = Badge.lookupFromString(content);
if (badge == null) {
event.getChannel().sendMessage(EmoteReference.ERROR + "There's no such badge...\n" + "Your available badges: " + player.getData().getBadges().stream().map(Badge::getDisplay).collect(Collectors.joining(", "))).queue();
return;
}
if (!data.getBadges().contains(badge)) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You don't have that badge.\n" + "Your available badges: " + player.getData().getBadges().stream().map(Badge::getDisplay).collect(Collectors.joining(", "))).queue();
return;
}
data.setShowBadge(true);
data.setMainBadge(badge);
player.saveAsync();
event.getChannel().sendMessage(EmoteReference.CORRECT + "Your display badge is now: **" + badge.display + "**").queue();
}
});
}
use of net.kodehawa.mantarobot.core.modules.commands.base.ITreeCommand in project MantaroBot by Mantaro.
the class MiscCmds method misc.
@Subscribe
public void misc(CommandRegistry cr) {
ITreeCommand miscCommand = (ITreeCommand) cr.register("misc", new SimpleTreeCommand(Category.MISC) {
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "Misc Commands").setDescription("**Miscellaneous funny/useful commands.**").addField("Usage", "`~>misc reverse <sentence>` - **Reverses any given sentence.**\n" + "`~>misc rndcolor` - **Gives you a random hex color.**\n", false).addField("Parameter Explanation", "`sentence` - **A sentence to reverse.**\n" + "`@user` - **A user to mention.**", false).build();
}
}.addSubCommand("reverse", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
if (content.isEmpty()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You didn't provide any message to reverse!").queue();
return;
}
new MessageBuilder().append(new StringBuilder(content).reverse().toString()).stripMentions(event.getGuild(), Message.MentionType.EVERYONE, Message.MentionType.HERE).sendTo(event.getChannel()).queue();
}
}).addSubCommand("rndcolor", new SubCommand() {
@Override
protected void call(GuildMessageReceivedEvent event, String content) {
event.getChannel().sendMessage(String.format(EmoteReference.TALKING + "The random color is %s", randomColor())).queue();
}
}));
miscCommand.createSubCommandAlias("rndcolor", "randomcolor");
}
Aggregations