Illuminatiiiiii
11/10/2018 - 12:47 AM

New UserInfo Command

For Episode 9 of the JDA Series: https://youtu.be/O3o58romUEc

package me.illuminatiproductions.commands;

import com.jagrosh.jdautilities.command.Command;
import com.jagrosh.jdautilities.command.CommandEvent;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Role;

import java.awt.*;
import java.time.format.DateTimeFormatter;
import java.util.List;

public class UserInfo extends Command {

    public UserInfo(){
        super.name = "user-info";
        super.help = "Get some information about a user";
        super.aliases = new String[]{"userinfo"};
        super.category = new Category("Members");
        super.cooldown = 10;
        super.arguments = "[name]";
    }

    @Override
    protected void execute(CommandEvent event) {
        if (event.getArgs().isEmpty()){
            event.reply("Provide a name! Like this: $user-info [name]");
        }else{
            //Gets the member object of the user so we can use easil
            Member name;
            DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd"); //Time formatter
            try{
                name = event.getMessage().getMentionedMembers().get(0);
                EmbedBuilder eb = new EmbedBuilder()
                        .setColor(Color.magenta)
                        .setThumbnail("http://pixelartmaker.com/art/1f41a07add48569.png")
                        .setAuthor("Information on " + name.getUser().getName(), "http://www.google.com", name.getUser().getAvatarUrl())
                        .setDescription(name.getUser().getName() + " joined on " + name.getJoinDate().format(fmt) + " :clock: ")
                        .addField("Game:", displayGameInfo(name), true)
                        .addField("Status:", name.getOnlineStatus().toString(), true)
                        .addField("Roles:", getRolesAsString(name.getRoles()), true)
                        .addField("Nickname: ", name.getNickname() == null ? "No Nickname" : name.getNickname(), true);
                event.reply(eb.build());
                event.reply(event.getAuthor().getAsMention() + " there you go");
            }catch (IndexOutOfBoundsException ex){
                System.out.println("Exception Occured");
                event.reply("You need to provide the name as a mention.");
            }
        }
    }
    //Display game status
    private String displayGameInfo(Member name){
        try{
            String game = name.getGame().getName();
            return "Playing: " + game;
        }catch (NullPointerException exx){
            return "No Game Being Played";
        }
    }
    //Get roles for the user
    private String getRolesAsString(List rolesList){
        String roles;
        if (!rolesList.isEmpty()){
            Role tempRole = (Role) rolesList.get(0);
            roles = tempRole.getName();
            for (int i = 1; i < rolesList.size(); i++){
                tempRole = (Role) rolesList.get(i);
                roles = roles + ", " + tempRole.getName();
            }
        }else{
            roles = "No Roles";
        }
        return roles;
    }
}
package me.illuminatiproductions;

import com.jagrosh.jdautilities.command.CommandClient;
import com.jagrosh.jdautilities.command.CommandClientBuilder;
import com.jagrosh.jdautilities.commons.waiter.EventWaiter;
import me.illuminatiproductions.commands.UserInfo;
import net.dv8tion.jda.core.AccountType;
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.OnlineStatus;
import net.dv8tion.jda.core.entities.Game;
import net.dv8tion.jda.core.hooks.ListenerAdapter;

public class App extends ListenerAdapter {
    public static void main(String [] args) throws Exception{

        JDA jda = new JDABuilder(AccountType.BOT).setToken("yourtokenhere").buildBlocking();

        CommandClientBuilder builder = new CommandClientBuilder();
        builder.setOwnerId("yurbot'sid");
        builder.setPrefix("$");
        builder.setGame(Game.watching("your ultimate demise"));
        builder.setStatus(OnlineStatus.DO_NOT_DISTURB);
        builder.setHelpWord("helpme");
        builder.addCommand(new UserInfo());

        CommandClient client = builder.build();

        jda.addEventListener(client);
    }
}