2017-07-17 52 views
-3

我正在使用JDA(Java)为Discord创建一个bot。我在尝试在Java控制台上简单调试消息时遇到问题。 我想打印“机器人运行”,但不起作用。它不打印。不一致JDA OnReady不起作用

问题出在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); 
    } 
} 

编辑: 代码更新 Sry基因我搞砸了的代码,但 “OnReady” 不起作用。它应该在机器人加载时起作用

+0

你在哪里调用'ReadyListener'?请提供一个最小化,完整,可验证的示例以获得更好的答案 - https://stackoverflow.com/help/mcve – Chris

+0

Sry我搞砸了代码 – Alberto

+0

欢迎来到Stack Overflow!在尝试提出更多问题之前,请阅读[我如何提出一个好问题?](http://stackoverflow.com/help/how-to-ask)。 –

回答

1

因为您在Bot启动后添加了Listener。当您在jda上调用buildBlocking时,Bot启动并阻止此线程。所以这个监听者从来不会被添加。

JDABuilder builder = new JDABuilder(AccountType.BOT); 
builder.setToken("x"); 
builder.addEventListener(new MessageListener()); 
JDA jda = builder.buildBlocking(); 
+0

你将如何修复代码? – dcsohl

+0

你应该编辑这个到你的答案。答案(和问题)应该是独立的,没有阅读评论;您也许已经注意到注释并不适用于代码块。 – dcsohl

+0

在尝试回答更多问题之前,请阅读[我如何写出一个好答案?](http://stackoverflow.com/help/how-to-answer)。 –