Discord JDA OnReady 不起作用
Discord JDA OnReady doesn't work
我正在使用 JDA (Java) 为 Discord 创建一个机器人。我在 java 控制台上尝试简单调试消息时遇到问题。
我想打印 "Bot running" 但不起作用。它不打印。
问题出在onReady(),请看代码。
public class MessageListener extends ListenerAdapter
{
public static void main(String[] args)
throws LoginException, RateLimitedException, InterruptedException
{
JDA jda = new JDABuilder(AccountType.BOT).setToken("x").buildBlocking();
jda.addEventListener(new MessageListener());
}
@Override
public void onMessageReceived(MessageReceivedEvent event)
{
if (event.isFromType(ChannelType.PRIVATE))
{
System.out.printf("[PM] %s: %s\n", event.getAuthor().getName(),
event.getMessage().getContent());
}
}
@Override
public void onReady(ReadyEvent e){
String server = "bot running\n";
System.out.println(server);
}
}
编辑:
代码已更新
对不起,我弄乱了代码,但是 "OnReady" 不起作用。它应该在加载机器人时工作
因为您是在 Bot 启动后添加监听器。当您在 jda 上调用 buildBlocking 时,Bot 将启动并阻止此线程。所以听众永远不会被添加。
JDABuilder builder = new JDABuilder(AccountType.BOT);
builder.setToken("x");
builder.addEventListener(new MessageListener());
JDA jda = builder.buildBlocking();
我正在使用 JDA (Java) 为 Discord 创建一个机器人。我在 java 控制台上尝试简单调试消息时遇到问题。 我想打印 "Bot running" 但不起作用。它不打印。
问题出在onReady(),请看代码。
public class MessageListener extends ListenerAdapter
{
public static void main(String[] args)
throws LoginException, RateLimitedException, InterruptedException
{
JDA jda = new JDABuilder(AccountType.BOT).setToken("x").buildBlocking();
jda.addEventListener(new MessageListener());
}
@Override
public void onMessageReceived(MessageReceivedEvent event)
{
if (event.isFromType(ChannelType.PRIVATE))
{
System.out.printf("[PM] %s: %s\n", event.getAuthor().getName(),
event.getMessage().getContent());
}
}
@Override
public void onReady(ReadyEvent e){
String server = "bot running\n";
System.out.println(server);
}
}
编辑: 代码已更新 对不起,我弄乱了代码,但是 "OnReady" 不起作用。它应该在加载机器人时工作
因为您是在 Bot 启动后添加监听器。当您在 jda 上调用 buildBlocking 时,Bot 将启动并阻止此线程。所以听众永远不会被添加。
JDABuilder builder = new JDABuilder(AccountType.BOT);
builder.setToken("x");
builder.addEventListener(new MessageListener());
JDA jda = builder.buildBlocking();