Discord JDA OnReady 不起作用
Posted
技术标签:
【中文标题】Discord JDA OnReady 不起作用【英文标题】:Discord JDA OnReady doesn't work 【发布时间】:2017-12-22 15:21:57 【问题描述】:我正在使用 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”不起作用。它应该在加载机器人时工作
【问题讨论】:
你在哪里打电话给ReadyListener
?请提供最低、完整、可验证的示例以获得更好的答案 - ***.com/help/mcve
对不起,我搞砸了代码
欢迎来到 Stack Overflow!在尝试提出更多问题之前,请阅读How do I ask a good question?。
欢迎来到 Stack Overflow!在尝试提出更多问题之前,请阅读Why is “Can someone help me?” not an actual question?。
【参考方案1】:
因为您在 Bot 启动后添加了侦听器。当您在 jda 上调用 buildBlocking 时,Bot 会启动并阻止该线程。所以监听器永远不会被添加。
JDABuilder builder = new JDABuilder(AccountType.BOT);
builder.setToken("x");
builder.addEventListener(new MessageListener());
JDA jda = builder.buildBlocking();
【讨论】:
您应该将其编辑到您的答案中。答案(和问题)应该是独立的,无需阅读 cmets;您可能还注意到 cmets 并不真正适合代码块。 在尝试回答更多问题之前,请阅读How do I write a good answer?。以上是关于Discord JDA OnReady 不起作用的主要内容,如果未能解决你的问题,请参考以下文章