我正在使用JDA library编写Discord机器人,但遇到了一个相当普遍的问题。
我需要编写一种方法,该方法将读取/addperson
命令(/addperson
之后没有任何其他信息),然后将消息“您叫什么名字”发送到同一聊天室
目前,该漫游器会期望用户的响应(不会干扰其他用户使用其他 TextChannels 中的漫游器功能)。
可能发生的事件:
Tony
),则机器人应移至下一个问题。21324
),则机器人会反复询问用户名或等待/end
命令。 / li>
我将ExampleBot中的代码添加到了我的项目中。很难在JDA-Utilities库中找到信息,因此我为以下几个问题编写了示例代码:
public class TestLoop extends Command {
private EventWaiter waiter;
private Database database;
public TestLoop(Database database, EventWaiter waiter) {
this.waiter = waiter;
this.name = "addperson";
this.help = "add person to server";
this.database = database;
}
@Override
protected void execute(CommandEvent event)
{
// ask what is the user's name
event.reply("What is your name?");
// wait for a response
waiter.waitForEvent(MessageReceivedEvent.class,
e -> e.getAuthor().equals(event.getAuthor()) && e.getChannel().equals(event.getChannel()),
e -> {
e.getChannel().sendMessage("Thank you, `" + e.getMessage().getContentRaw() + "`. What is your age?").queue();
waiter.waitForEvent(MessageReceivedEvent.class,
w -> w.getAuthor().equals(e.getAuthor()) && w.getChannel().equals(e.getChannel()),
w -> w.getChannel().sendMessage("So, you,re `" + e.getMessage().getContentRaw() + "` and your age is `" + w.getMessage().getContentRaw() + "`").queue());
},
// if the user takes more than a minute, time out
10, TimeUnit.SECONDS, () -> event.reply("Sorry, you took too long."));
}
}
我有两个问题: -我该如何写多个问题并给出答案? -如何防止漫游器在执行当前命令时读取命令?