【发布时间】:2019-06-26 17:57:54
【问题描述】:
我目前正在学习 Java 编程课程,最近开始尝试使用 JDA 工具为我的服务器制作一个基本的 Discord 机器人。理想情况下,我希望我的机器人在有人说“Hello Apples!”时做出回应。询问他们的姓名,然后回复“嗨!”如果这条消息是由说“Hello Apples!”的同一个人发送的现在我的机器人无法等待任何用户输入超过最初的“Hello Apples!”消息,并立即溢出其所有文本。我相信我当前的代码设置正确,以确保机器人只会回应“嗨!”如果它收到来自最初发送“Hi Apples!”的同一个人的消息,但我不能完全确定,因为它不等待额外的消息,结果从同一条消息中读取两次并打印出来:
你好!告诉我你的名字,或者说“停”!
嗨嗨苹果!
等你来
我真的很想知道如何创建某种“停止”,或者一种方法可以导致机器人等待最初问候机器人的用户的附加用户输入,如果可能的话,一种方法设置时间限制,这样如果机器人不回复,机器人就不会保持无法操作。
import net.dv8tion.jda.core.AccountType;
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.JDABuilder;
public class Main {
public static void main(String[] args) throws Exception {
try {
JDA api = new JDABuilder(AccountType.BOT).setToken("NTQxMTMxMDc4MTY1ODU2MjYw.DzbGoQ.oFIM_py pLMOc60qU1PgeeUXU8Qo").build();
api.addEventListener(new MyEventListener());
} catch (Exception e) {
e.printStackTrace();
}
}
}
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.MessageChannel;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.entities.*;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
public class MyEventListener extends ListenerAdapter {
public void onMessageReceived(MessageReceivedEvent event) {
if (event.getAuthor().isBot()) return;
Message message = event.getMessage();
String content = message.getContentRaw();
MessageChannel channel = event.getChannel();
if (content.startsWith("Hi Apples!")) {
Member member = message.getMember();
channel.sendMessage("Hi! Tell me your name, or say \"Stop\"!").queue();
int n = 0;
while (n == 0) {
Message message2 = event.getMessage();
String content2 = message.getContentRaw();
Member member2 = message2.getMember();
String nick = member2.getNickname();
if (member == member2) {
channel.sendMessage("Hi " + content2 + "!").queue();
n = 1;
}
else {
}
channel.sendMessage("Wait your turn " + nick + "!").queue();
if (content2 == "Stop") {
channel.sendMessage("Understood!").queue();
n = 1;
}
}
}
}
}
我的预期结果是:
用户:嗨苹果!
博特:嗨!告诉我你的名字,或者说停止!
USER2:嗨!
BOT:等待轮到你 USER2!
用户:吉米
机器人:嗨,吉米!
实际结果:(一次全部发送)
你好!告诉我你的名字,或者说“停”!
嗨嗨苹果!
轮到你了(我的不和谐昵称)!
【问题讨论】:
标签: java discord discord-jda