Search in sources :

Example 11 with DiscordException

use of sx.blah.discord.util.DiscordException in project solinia3-core by mixxit.

the class Solinia3CorePlugin method createClient.

public static IDiscordClient createClient(String token, boolean login) {
    ClientBuilder clientBuilder = new ClientBuilder();
    clientBuilder.withToken(token);
    try {
        if (login) {
            return clientBuilder.login();
        } else {
            return clientBuilder.build();
        }
    } catch (DiscordException e) {
        e.printStackTrace();
        return null;
    }
}
Also used : DiscordException(sx.blah.discord.util.DiscordException) ClientBuilder(sx.blah.discord.api.ClientBuilder)

Example 12 with DiscordException

use of sx.blah.discord.util.DiscordException in project DisCal-Discord-Bot by NovaFox161.

the class Main method createClient.

/**
 * Creates the DisCal bot client.
 *
 * @param token The Bot Token.
 * @return The client if successful, otherwise <code>null</code>.
 */
private static IDiscordClient createClient(String token) {
    // Creates the ClientBuilder instance
    ClientBuilder clientBuilder = new ClientBuilder();
    // Adds the login info to the builder
    clientBuilder.withToken(token).withRecommendedShardCount();
    try {
        return clientBuilder.login();
    } catch (DiscordException e) {
        e.printStackTrace();
    }
    return null;
}
Also used : DiscordException(sx.blah.discord.util.DiscordException) ClientBuilder(sx.blah.discord.api.ClientBuilder)

Example 13 with DiscordException

use of sx.blah.discord.util.DiscordException in project DiscordSailv2 by Vaerys-Dawn.

the class ArtHandler method pinMessage.

public static void pinMessage(CommandObject command, UserObject reacted, UserObject owner) {
    IChannel channelIDS = command.guild.getChannelByType(ChannelSetting.ART);
    List<TrackLikes> likes = command.guild.channelData.getLikes();
    List<Long> pins = command.guild.channelData.getPinnedMessages();
    // exit if not pinning art
    if (!command.guild.config.artPinning)
        return;
    // exit if the art is already pinned
    if (command.message.get().isPinned())
        return;
    // exit if message owner is a bot
    if (owner.get().isBot())
        return;
    // exit if message has already been unpinned.
    IReaction reaction = command.message.getReationByName(Constants.EMOJI_REMOVE_PIN);
    if (reaction != null && reaction.getUserReacted(command.client.bot.get())) {
        RequestBuffer.request(() -> command.message.get().removeReaction(reacted.get(), Utility.getReaction(Constants.EMOJI_ADD_PIN))).get();
        return;
    }
    // exit if user has art pinning denied.
    ProfileObject profile = reacted.getProfile(command.guild);
    if (profile != null && profile.getSettings().contains(UserSetting.DENY_ART_PINNING))
        return;
    // exit if there is no art channel
    if (channelIDS == null)
        return;
    // exit if this is not the art channel
    if (channelIDS.getLongID() != command.channel.longID)
        return;
    // exit if there is no art to be found
    if (!checkAttachments(command) && !checkMessage(command))
        return;
    try {
        // pin message
        RequestBuffer.request(() -> command.channel.get().pin(command.message.get())).get();
        // debug builder
        String name;
        if (checkAttachments(command)) {
            name = "ATTACHMENT_PIN";
        } else {
            name = "MESSAGE_PIN";
        }
        String args;
        args = command.message.getContent();
        for (IMessage.Attachment a : command.message.getAttachments()) {
            args += " <" + a.getUrl() + ">";
        }
        if (command.message.getContent() == null || command.message.getContent().isEmpty()) {
            args = args.replace("  ", "");
        }
        command.guild.sendDebugLog(command, "ART_PINNED", name, args);
        // end debug
        // add to ping
        pins.add(command.message.longID);
        // add pin response
        RequestBuffer.request(() -> command.message.get().addReaction(Utility.getReaction(Constants.EMOJI_ADD_PIN)));
        if (command.guild.config.likeArt && command.guild.config.modulePixels) {
            // add heart
            RequestBuffer.request(() -> command.message.get().addReaction(Utility.getReaction(Constants.EMOJI_LIKE_PIN)));
            // add to list
            likes.add(new TrackLikes(command.message.longID));
        }
        String response;
        if (!command.guild.config.autoArtPinning) {
            if (owner.longID == reacted.longID) {
                response = "> **" + reacted.displayName + "** Has pinned their";
            } else {
                response = "> **" + reacted.displayName + "** Has pinned **" + owner.displayName + "'s**";
            }
            response += " art by reacting with the \uD83D\uDCCC emoji.";
        } else {
            response = "> I have pinned **" + owner.displayName + "'s** art.";
        }
        if (command.guild.config.likeArt && command.guild.config.modulePixels) {
            response += "\nYou can now react with a \u2764 emoji to give the user some pixels.";
        }
        IMessage pinResponse = RequestHandler.sendMessage(response, command.channel).get();
        Thread thread = new Thread(() -> {
            try {
                logger.trace("Deleting in 2 minutes.");
                Thread.sleep(2 * 60 * 1000);
                RequestHandler.deleteMessage(pinResponse);
            } catch (InterruptedException e) {
            // do nothing
            }
        });
        checkList(command);
        thread.start();
        return;
    } catch (DiscordException e) {
        if (e.getErrorMessage().contains("already pinned")) {
            return;
        } else {
            Utility.sendStack(e);
        }
    }
}
Also used : IChannel(sx.blah.discord.handle.obj.IChannel) IMessage(sx.blah.discord.handle.obj.IMessage) ProfileObject(com.github.vaerys.objects.ProfileObject) TrackLikes(com.github.vaerys.objects.TrackLikes) DiscordException(sx.blah.discord.util.DiscordException) IReaction(sx.blah.discord.handle.obj.IReaction)

Example 14 with DiscordException

use of sx.blah.discord.util.DiscordException in project DiscordSailv2 by Vaerys-Dawn.

the class ArtHandler method checkList.

private static void checkList(CommandObject command) {
    List<Long> pinnedMessages = command.guild.channelData.getPinnedMessages();
    List<TrackLikes> likes = command.guild.channelData.getLikes();
    List<IMessage> channelpins = RequestBuffer.request(() -> command.channel.get().getPinnedMessages()).get();
    List<IMessage> markedForUnpin = new LinkedList<>();
    int pinLimit = command.guild.config.pinLimit;
    int tries = 0;
    ListIterator iterator = pinnedMessages.listIterator();
    List<Long> channelPinsLong = channelpins.stream().map(iMessage -> iMessage.getLongID()).collect(Collectors.toList());
    try {
        while (iterator.hasNext()) {
            long item = (long) iterator.next();
            if (!channelPinsLong.contains(item)) {
                iterator.remove();
            }
        }
    } catch (ConcurrentModificationException e) {
        return;
    }
    while (pinnedMessages.size() > pinLimit && tries < 50) {
        for (IMessage p : channelpins) {
            if (pinnedMessages.contains(p.getLongID()) && pinnedMessages.get(0) == p.getLongID()) {
                // adds the pin to the messages to be unpinned
                markedForUnpin.add(p);
                removePin(p, pinnedMessages);
            }
        }
        tries++;
    }
    tries = 0;
    for (IMessage message : markedForUnpin) {
        try {
            if (message.isPinned()) {
                RequestBuffer.request(() -> command.channel.get().unpin(message)).get();
                command.guild.sendDebugLog(command.setMessage(message), "ART_PINNED", "UNPIN", "PIN TOTAL = " + command.channel.getPinCount() + "/" + command.guild.config.pinLimit);
            }
        } catch (DiscordException e) {
            if (!e.getMessage().contains("Message is not pinned!")) {
                throw (e);
            }
        }
    }
    tries++;
    iterator = likes.listIterator();
    while (iterator.hasNext()) {
        TrackLikes like = (TrackLikes) iterator.next();
        if (!pinnedMessages.contains(like.getMessageID())) {
            iterator.remove();
        }
    }
}
Also used : RequestBuffer(sx.blah.discord.util.RequestBuffer) java.util(java.util) CommandObject(com.github.vaerys.commands.CommandObject) Logger(org.slf4j.Logger) TrackLikes(com.github.vaerys.objects.TrackLikes) ChannelSetting(com.github.vaerys.enums.ChannelSetting) LoggerFactory(org.slf4j.LoggerFactory) UserSetting(com.github.vaerys.enums.UserSetting) Constants(com.github.vaerys.main.Constants) Collectors(java.util.stream.Collectors) IMessage(sx.blah.discord.handle.obj.IMessage) IUser(sx.blah.discord.handle.obj.IUser) IChannel(sx.blah.discord.handle.obj.IChannel) UserObject(com.github.vaerys.masterobjects.UserObject) ProfileObject(com.github.vaerys.objects.ProfileObject) DiscordException(sx.blah.discord.util.DiscordException) IReaction(sx.blah.discord.handle.obj.IReaction) Utility(com.github.vaerys.main.Utility) IMessage(sx.blah.discord.handle.obj.IMessage) TrackLikes(com.github.vaerys.objects.TrackLikes) DiscordException(sx.blah.discord.util.DiscordException)

Example 15 with DiscordException

use of sx.blah.discord.util.DiscordException in project Discord4J by Discord4J.

the class BaseBot method login.

/**
 * A custom login() method to handle all of the possible exceptions and set the bot instance.
 */
public static BaseBot login(String token) {
    // Initializing the bot variable
    BaseBot bot = null;
    // Creates a new client builder instance
    ClientBuilder builder = new ClientBuilder();
    // Sets the bot token for the client
    builder.withToken(token);
    try {
        // Builds the IDiscordClient instance and logs it in
        IDiscordClient client = builder.login();
        // Creating the bot instance
        bot = new BaseBot(client);
    } catch (DiscordException e) {
        // Error occurred logging in
        System.err.println("Error occurred while logging in!");
        e.printStackTrace();
    }
    return bot;
}
Also used : DiscordException(sx.blah.discord.util.DiscordException) IDiscordClient(sx.blah.discord.api.IDiscordClient) ClientBuilder(sx.blah.discord.api.ClientBuilder)

Aggregations

DiscordException (sx.blah.discord.util.DiscordException)20 ClientBuilder (sx.blah.discord.api.ClientBuilder)7 IChannel (sx.blah.discord.handle.obj.IChannel)4 MissingPermissionsException (sx.blah.discord.util.MissingPermissionsException)4 RateLimitException (sx.blah.discord.util.RateLimitException)4 Language (enums.Language)3 IDiscordClient (sx.blah.discord.api.IDiscordClient)3 IGuild (sx.blah.discord.handle.obj.IGuild)3 IMessage (sx.blah.discord.handle.obj.IMessage)3 IUser (sx.blah.discord.handle.obj.IUser)3 ProfileObject (com.github.vaerys.objects.ProfileObject)2 TrackLikes (com.github.vaerys.objects.TrackLikes)2 Matcher (java.util.regex.Matcher)2 EventDispatcher (sx.blah.discord.api.events.EventDispatcher)2 DiscordClientImpl (sx.blah.discord.api.internal.DiscordClientImpl)2 IReaction (sx.blah.discord.handle.obj.IReaction)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 CommandObject (com.github.vaerys.commands.CommandObject)1 ChannelSetting (com.github.vaerys.enums.ChannelSetting)1 UserSetting (com.github.vaerys.enums.UserSetting)1