【问题标题】:Clear Command Deleting One Less Message(Java Discord JDA)清除命令删除一条消息(Java Discord JDA)
【发布时间】:2021-06-02 12:32:48
【问题描述】:

我正在努力做到这一点,所以每当有人这样做时 !clear [Amount] 它将删除 [Amount] 中的消息数量。我遇到的问题是 !clear [Amount] 删除了 1 条消息。例如,如果有人执行 !clear 3,它将删除“!clear 3”和它上面的 2 条消息。我想这样做,以便每当有人执行 !clear 3 时,它将删除“!clear 3”并删除其上方的 3 条消息。有人可以帮我编辑我的代码吗?

这是我的代码:

package Events;

import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

import java.util.List;
import java.util.concurrent.TimeUnit;

public class Clear  extends ListenerAdapter {
    public void onGuildMessageReceived(GuildMessageReceivedEvent e) {
        String[] args = e.getMessage().getContentRaw().split("\\s+");

        if (args[0].equalsIgnoreCase("!clear")) {
            if (args.length < 2) {
                EmbedBuilder usage = new EmbedBuilder();
                usage.setColor(0xff3923);
                usage.setTitle("Specify amount to delete");
                usage.setDescription("Usage: !clear [# of messages]");
                e.getChannel().sendMessage(usage.build()).queue();
            } else {
                List<Message> messages = e.getChannel().getHistory().retrievePast(Integer.parseInt(args[1])).complete();
                e.getChannel().deleteMessages(messages).queue();
                e.getChannel().sendMessage("Messages has been deleted!").queue(m -> m.delete().queueAfter(5, TimeUnit.SECONDS));
            }
        }
    }
}

【问题讨论】:

  • 只需使用.retrievePast(Integer.parseInt(args[1])+1) 就可以多收到一条消息?

标签: java discord-jda


【解决方案1】:

编辑自:

.retrievePast(Integer.parseInt(args[1]))

到:

.retrievePast(Integer.parseInt(args[1])+1)

所有功劳归dan1st(tysm

【讨论】:

    猜你喜欢
    • 2020-11-21
    • 2019-10-25
    • 2022-09-30
    • 2021-06-30
    • 1970-01-01
    • 2018-08-26
    • 2021-06-05
    • 2021-09-26
    • 2021-07-25
    相关资源
    最近更新 更多