Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让我的java discord机器人在5秒后自动删除?_Java_Discord Jda - Fatal编程技术网

如何让我的java discord机器人在5秒后自动删除?

如何让我的java discord机器人在5秒后自动删除?,java,discord-jda,Java,Discord Jda,我如何让我的discord java bot在5秒后删除消息 String[] messageArgs = event.getMessage().getContentRaw().toLowerCase().split(" "); for (String args : messageArgs) { if (blacklistWords.contains(args)) { if (memberRoles.contains(warn0)) {

我如何让我的discord java bot在5秒后删除消息

String[] messageArgs = event.getMessage().getContentRaw().toLowerCase().split(" ");
for (String args : messageArgs) {
    if (blacklistWords.contains(args)) {
        if (memberRoles.contains(warn0)) {                          
            event.getMessage().delete().queue();            
            event.getMessage().getChannel().sendMessage
            ("**" + MemberMention + "** unterlasse bitte diese **Wortwahl.**"
             + "\nBei **3 Verwarnungen** wirst du **gekickt!**").queue();

            event.getGuild().addRoleToMember(user, warn1).complete();
            event.getJDA().getGuildById(Secrets.guildID).removeRoleFromMember(user, warn0).complete();

            break;
        }
    }
}

只需使用类似于
Thread.sleep(5000)的东西暂停一下操作。这将暂停5000毫秒或5秒。

您可以启动一个新线程并暂停该线程,然后再对消息运行delete命令。这样就不会引起其他代码行的问题

String[]messageArgs=event.getMessage().getContentRaw().toLowerCase().split(“”);
for(字符串参数:messageArgs){
if(blacklistWords.contains(args)){
if(memberRoles.contains(warn0)){
Runnable r=新的Runnable(){
@凌驾
公开募捐{
试一试{
//暂停5秒钟
等待(5000);
event.getMessage().delete().queue();
event.getMessage().getChannel().sendMessage
(“**”+成员提及+“**UNTERLASE BITE diese**Wortwahl.**”
>此处+“\nBei**3 Verwarnungen**wirst du**gekickt!**”)。队列();
event.getGuild().addRoleToMember(用户,warn1.complete();
event.getJDA().getGuildById(Secrets.guildID).RemoveOleFromMember(用户,警告0)
.complete();
}捕捉(中断异常e){
e、 printStackTrace();
}
}
};
螺纹t=新螺纹(r);
t、 start();
打破
}
}
}

正确的方法是在发送消息时将使用者传递给.queue方法。再加上使用RestAction#queueAfter,您将获得

channel.sendMessage("message").queue(message -> message.delete().queueAfter(5, 
TIMEUNIT.SECONDS);
见和


还有另一种方法,使用

这是否回答了您的问题<代码>等待
不是一种合适的睡眠方式。您也不需要为此创建新线程。正确的方法是使用ScheduledExecutorService或
queueAfter
。这里解释如下:感谢您的回答,我知道
queueAfter
,但我不知道如何使用
queueAfter
删除邮件。我也读了下面的帖子。这会使机器人在5秒钟内没有反应。这不是个好办法。