我正在用 Java 制作我的第一个 Discord 机器人。我正在使用 Gradle。到目前为止,这是我的代码:
public class Main extends ListenerAdapter {
public static void main(String[] args) throws LoginException {
JDABuilder builder = new JDABuilder(AccountType.BOT);
String token = "x";
builder.setToken(token);
builder.addEventListener(new Main());
builder.buildAsync();
}
@Override
public void onMessageReceived(MessageReceivedEvent event) {
System.out.println("We received a message from " +
event.getAuthor().getName() + ": " +
event.getMessage().getContentDisplay()
);
if (event.getMessage().getContentRaw().equals("yomyman")) {
event.getChannel().sendMessage("Pong!").queue();
}
}
}
当我执行程序时,我没有收到任何警告,我的机器人在我的 Discord 服务器中上线。但是由于某种原因,当我在任何频道中输入“yomyman”时,什么也没有发生。没有任何东西被打印到控制台,机器人也没有在控制台上说什么。最重要的是方法 onMessageReceived();根本不会被调用。这是我在这个项目中唯一的代码。
附加信息:
答案 0 :(得分:0)
您遇到了 a discord developer support article 中描述的问题:
<块引用>为什么我的机器人突然不再工作?
在部署新的网关更新时,未充分准备好指定网关意图的机器人可能会遇到各种问题。常见症状包括:
如果您受到此影响,这是因为 2 个网关更改:
我如何恢复并运行? 更新您的图书馆
首先,您必须确保您使用的是可以处理意图的库版本,并且扩展后不再一次请求有关多个公会的信息。
对于 discord.py,这意味着您需要更新到 v1.5 或更高版本。
对于 discord.js,这意味着您需要更新到 v12 或更高版本。
如果您不确定如何将机器人升级到新的库版本,或者不清楚替代库的意图兼容性,请查看我们的开发者社区资源中提供的库链接。
<块引用>指定网关意图
请注意,我们的各种网关意图都没有特权,这意味着它们不需要翻转特定的开关或请求列入白名单的访问权限。您可以查看我们所有可用的意图 here。
指定您想要接收的意图因您选择的库而异。 here 提供了有关如何在 discord.js 中指定网关意图的文档。在 discord.py 中指定网关意图的文档可用 here。
因此,您首先需要更新 JDA。我建议您为此使用最新版本。您可以在此处查看最新版本代码:
之后,您应该像这样更改 JDABuilder 的构造函数的使用,如定义的 in the README of JDA:
JDABuilder builder=JDABuilder.createDefault("YOUR_TOKEN_HERE");
如果您需要特权网关意图,您还需要在开发者页面和应用程序中启用这些。