/
HelpCommand.java
55 lines (45 loc) · 2.02 KB
/
HelpCommand.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.almightyalpaca.discord.jdabutler.commands.commands;
import com.almightyalpaca.discord.jdabutler.Bot;
import com.almightyalpaca.discord.jdabutler.commands.Command;
import com.almightyalpaca.discord.jdabutler.util.EmbedUtil;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.MessageBuilder;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import org.apache.commons.lang3.StringUtils;
import java.util.Comparator;
import java.util.stream.Collectors;
public class HelpCommand extends Command
{
private static final String[] ALIASES = new String[]
{ "info" };
@Override
public void dispatch(final User sender, final TextChannel channel, final Message message, final String content, final GuildMessageReceivedEvent event)
{
final EmbedBuilder builder = new EmbedBuilder();
EmbedUtil.setColor(builder);
final String prefix = Bot.config.getString("prefix");
final int size = Bot.dispatcher.getCommands().stream().filter(c -> c.getHelp() != null).mapToInt(c -> c.getName().length()).max().orElse(0) + 1 + prefix.length();
final String help = Bot.dispatcher.getCommands().stream().sorted(Comparator.comparing(Command::getName)).filter(c -> c.getHelp() != null).map(c -> String.format("`%s` - %s", StringUtils.rightPad(prefix + c.getName().toLowerCase() + "", size, "."), c.getHelp())).collect(Collectors.joining("\n"));
builder.setAuthor(message.getMember().getEffectiveName(), null, sender.getEffectiveAvatarUrl());
builder.setDescription(help);
reply(event, new MessageBuilder().setEmbed(builder.build()).build());
}
@Override
public String[] getAliases()
{
return HelpCommand.ALIASES;
}
@Override
public String getHelp()
{
return "Prints a list of commands";
}
@Override
public String getName()
{
return "help";
}
}