【发布时间】:2023-03-07 02:37:02
【问题描述】:
我的机器人不会不和谐地显示嵌入消息。它打印的错误位于代码下方。它命中了 if 语句,因为我在其中放置了一条普通消息并显示了该消息。但嵌入消息不会显示。
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import java.awt.Color;
public class Commands extends ListenerAdapter{
public String prefix = "!";
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
String[] args = event.getMessage().getContentRaw().split(" ");
if (args[0].equalsIgnoreCase(prefix + "test")) {
EmbedBuilder embed = new EmbedBuilder();
embed.setTitle("Stonks Thang", null);
embed.setDescription("this is the description");
embed.addField("Embed Feild 1", "This is the field", false);
embed.setColor(Color.GREEN);
embed.setFooter("Created by Nick", "");
event.getChannel().sendMessage(embed.build()).queue();
embed.clear();
}
}
}
打印出来的错误是这样的
[JDA MainWS-ReadThread] ERROR JDA - One of the EventListeners had an uncaught exception
java.lang.IllegalArgumentException: URL must be a valid http(s) or attachment url.
at net.dv8tion.jda.internal.utils.Checks.check(Checks.java:48)
at net.dv8tion.jda.api.EmbedBuilder.urlCheck(EmbedBuilder.java:801)
at net.dv8tion.jda.api.EmbedBuilder.setFooter(EmbedBuilder.java:694)
at Commands.onGuildMessageReceived(Commands.java:22)
at net.dv8tion.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:466)
at net.dv8tion.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:96)
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handleInternally(EventManagerProxy.java:88)
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:70)
at net.dv8tion.jda.internal.JDAImpl.handleEvent(JDAImpl.java:160)
at net.dv8tion.jda.internal.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:97)
at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:36)
at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:952)
at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:839)
at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:817)
at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:990)
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
【问题讨论】:
-
这个问题是 (setFooter) 部分。 setFooter 的第二部分是寻找一个 URL,而不是一个空字符串。如果您也遇到此问题,请确保您的页脚在第二部分有 URL 或“null”。
-
另外,您应该使用
sendMessageEmbeds(),而不需要调用EmbedBuilder#clear。 -
您不想调用 clear 函数以便为下一次运行清除它吗?
-
每次运行此代码时,您都在创建一个具有清晰状态的全新构建器,然后您调用 clear 并且之后不再使用它。这意味着您无缘无故地清除了构建器状态。当您的方法返回时,整个构建器实例将无法访问。
-
哦,明白了!感谢您的帮助!
标签: java discord chatbot discord-jda