Search in sources :

Example 1 with MissingPermissionsException

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

the class ParrotBot method handle.

/**
 * Called when the client receives a message.
 */
@Override
public void handle(MessageReceivedEvent event) {
    // Gets the message from the event object NOTE: This is not the content of the message, but the object itself
    IMessage message = event.getMessage();
    // Gets the channel in which this message was sent.
    IChannel channel = message.getChannel();
    try {
        // Builds (sends) and new message in the channel that the original message was sent with the content of the original message.
        new MessageBuilder(this.client).withChannel(channel).withContent(message.getContent()).build();
    } catch (RateLimitException e) {
        // RateLimitException thrown. The bot is sending messages too quickly!
        System.err.print("Sending messages too quickly!");
        e.printStackTrace();
    } catch (DiscordException e) {
        // DiscordException thrown. Many possibilities. Use getErrorMessage() to see what went wrong.
        // Print the error message sent by Discord
        System.err.print(e.getErrorMessage());
        e.printStackTrace();
    } catch (MissingPermissionsException e) {
        // MissingPermissionsException thrown. The bot doesn't have permission to send the message!
        System.err.print("Missing permissions for channel!");
        e.printStackTrace();
    }
}
Also used : IChannel(sx.blah.discord.handle.obj.IChannel) MessageBuilder(sx.blah.discord.util.MessageBuilder) RateLimitException(sx.blah.discord.util.RateLimitException) IMessage(sx.blah.discord.handle.obj.IMessage) DiscordException(sx.blah.discord.util.DiscordException) MissingPermissionsException(sx.blah.discord.util.MissingPermissionsException)

Example 2 with MissingPermissionsException

use of sx.blah.discord.util.MissingPermissionsException in project Ublisk by Derkades.

the class DiscordBot method onChat.

@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onChat(AsyncPlayerChatEvent event) {
    if (!enabled) {
        super.log(this, LogLevel.DEBUG, "Skipping discord bot for this message - module has not been initialized successfully.");
        return;
    }
    Player player = event.getPlayer();
    String message = "[" + player.getName() + "] " + event.getMessage();
    IChannel channel = client.getChannelByID("310155421719724052");
    try {
        channel.sendMessage(message);
    } catch (MissingPermissionsException e) {
        e.printStackTrace();
    } catch (RateLimitException e) {
        e.printStackTrace();
    } catch (DiscordException e) {
        e.printStackTrace();
    }
}
Also used : Player(org.bukkit.entity.Player) IChannel(sx.blah.discord.handle.obj.IChannel) RateLimitException(sx.blah.discord.util.RateLimitException) DiscordException(sx.blah.discord.util.DiscordException) MissingPermissionsException(sx.blah.discord.util.MissingPermissionsException) EventHandler(org.bukkit.event.EventHandler)

Example 3 with MissingPermissionsException

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

the class RoleBot method handle.

/**
 * Client is ready to interact with Discord.
 * @see ReadyBot
 */
@Override
public void handle(ReadyEvent event) {
    try {
        // Gets the first guild the bot is a member of. (NOTE: This is only for demonstration. Getting guilds in this way is NOT recommended. Use IDs or events instead.)
        IGuild guild = event.getClient().getGuilds().get(0);
        // Instantiate a RoleBuilder which will aide in the creation of the role.
        RoleBuilder roleBuilder = new RoleBuilder(guild);
        // Set the new role's name
        roleBuilder.withName("Awesome Role");
        // Set the new role's color
        roleBuilder.withColor(Color.GREEN);
        // Make the new role display separately from others in Discord.
        roleBuilder.setHoist(true);
        // Allow this role to be mentionable in chat.
        roleBuilder.setMentionable(true);
        // Assign the Administrator permission to this role.
        roleBuilder.withPermissions(EnumSet.of(Permissions.ADMINISTRATOR));
        // Add the role to the guild in Discord.
        IRole role = roleBuilder.build();
        // Gets the user of the bot
        IUser ourUser = event.getClient().getOurUser();
        // Assigns our new role to the bot. NOTE: This will make the bot's ONLY role our role.
        guild.editUserRoles(ourUser, new IRole[] { role });
    } catch (MissingPermissionsException | RateLimitException | DiscordException e) {
        // Error occurred
        e.printStackTrace();
    }
}
Also used : IRole(sx.blah.discord.handle.obj.IRole) RateLimitException(sx.blah.discord.util.RateLimitException) DiscordException(sx.blah.discord.util.DiscordException) IUser(sx.blah.discord.handle.obj.IUser) MissingPermissionsException(sx.blah.discord.util.MissingPermissionsException) IGuild(sx.blah.discord.handle.obj.IGuild) RoleBuilder(sx.blah.discord.util.RoleBuilder)

Example 4 with MissingPermissionsException

use of sx.blah.discord.util.MissingPermissionsException in project Shadbot by Shadorc.

the class BotUtils method sendMessage.

public static RequestFuture<IMessage> sendMessage(MessageBuilder message, int retry) {
    IGuild guild = message.getChannel().isPrivate() ? null : message.getChannel().getGuild();
    long guildID = guild == null ? -1 : guild.getLongID();
    if (retry == 0) {
        LogUtils.infof("{Guild ID: %d} Abort attempt to send message (3 failed requests).", guildID);
        return null;
    }
    if (!message.getChannel().getShard().isReady()) {
        if (guild != null) {
            LogUtils.infof("{Guild ID: %d} A message couldn't be sent because shard isn't ready, adding it to queue.", guildID);
            ShardManager.getShadbotShard(guild.getShard()).queue(message);
        }
        return null;
    }
    return RequestBuffer.request(() -> {
        try {
            return message.send();
        } catch (MissingPermissionsException err) {
            BotUtils.sendMessage(TextUtils.missingPerm(err.getMissingPermissions()), message.getChannel());
            LogUtils.infof("{Guild ID: %d} %s", guildID, err.getMessage());
        } catch (DiscordException err) {
            if (err.getMessage().contains("Message was unable to be sent (Discord didn't return a response)")) {
                LogUtils.infof("{Guild ID: %d} A message could not be send because Discord didn't return a response, retrying.", guildID);
                RequestFuture<IMessage> msgRequest = BotUtils.sendMessage(message, retry - 1);
                if (msgRequest != null) {
                    return msgRequest.get();
                }
            } else if (err.getMessage().contains("Failed to make a 400 failed request after 5 tries!")) {
                LogUtils.infof("{Guild ID: %d} %s", guildID, err.getMessage());
            } else {
                LogUtils.error(err, "An error occurred while sending message.");
            }
        }
        return null;
    });
}
Also used : RequestFuture(sx.blah.discord.util.RequestBuffer.RequestFuture) DiscordException(sx.blah.discord.util.DiscordException) MissingPermissionsException(sx.blah.discord.util.MissingPermissionsException) IGuild(sx.blah.discord.handle.obj.IGuild)

Example 5 with MissingPermissionsException

use of sx.blah.discord.util.MissingPermissionsException in project Shadbot by Shadorc.

the class MessageListener method onMessageReceivedEvent.

private void onMessageReceivedEvent(MessageReceivedEvent event) {
    VariousStatsManager.log(VariousEnum.MESSAGES_RECEIVED);
    IMessage message = event.getMessage();
    try {
        if (message.getAuthor().isBot()) {
            return;
        }
        if (message.getChannel().isPrivate()) {
            this.privateMessageReceived(message);
            return;
        }
        ShardManager.getShadbotShard(message.getShard()).messageReceived();
        if (!BotUtils.isChannelAllowed(message.getGuild(), message.getChannel())) {
            return;
        }
        if (MessageManager.intercept(message)) {
            return;
        }
        String prefix = Database.getDBGuild(message.getGuild()).getPrefix();
        if (message.getContent().startsWith(prefix)) {
            CommandManager.execute(new Context(prefix, message));
        }
    } catch (MissingPermissionsException err) {
        BotUtils.sendMessage(TextUtils.missingPerm(err.getMissingPermissions()), message.getChannel());
        LogUtils.infof("{Guild ID: %d} %s", message.getGuild().getLongID(), err.getMessage());
    } catch (Exception err) {
        BotUtils.sendMessage(Emoji.RED_FLAG + " Sorry, an unknown error occurred. My developer has been warned.", message.getChannel());
        LogUtils.error(message.getContent(), err, String.format("{Guild ID: %d} An unknown error occurred while receiving a message.", message.getGuild().getLongID()));
    }
}
Also used : Context(me.shadorc.shadbot.core.command.Context) IMessage(sx.blah.discord.handle.obj.IMessage) MissingPermissionsException(sx.blah.discord.util.MissingPermissionsException) MissingPermissionsException(sx.blah.discord.util.MissingPermissionsException) MissingArgumentException(me.shadorc.shadbot.exception.MissingArgumentException) IllegalCmdArgumentException(me.shadorc.shadbot.exception.IllegalCmdArgumentException)

Aggregations

MissingPermissionsException (sx.blah.discord.util.MissingPermissionsException)5 DiscordException (sx.blah.discord.util.DiscordException)4 RateLimitException (sx.blah.discord.util.RateLimitException)3 IChannel (sx.blah.discord.handle.obj.IChannel)2 IGuild (sx.blah.discord.handle.obj.IGuild)2 IMessage (sx.blah.discord.handle.obj.IMessage)2 Context (me.shadorc.shadbot.core.command.Context)1 IllegalCmdArgumentException (me.shadorc.shadbot.exception.IllegalCmdArgumentException)1 MissingArgumentException (me.shadorc.shadbot.exception.MissingArgumentException)1 Player (org.bukkit.entity.Player)1 EventHandler (org.bukkit.event.EventHandler)1 IRole (sx.blah.discord.handle.obj.IRole)1 IUser (sx.blah.discord.handle.obj.IUser)1 MessageBuilder (sx.blah.discord.util.MessageBuilder)1 RequestFuture (sx.blah.discord.util.RequestBuffer.RequestFuture)1 RoleBuilder (sx.blah.discord.util.RoleBuilder)1