![](/img/trans.png)
[英]I'm using JDA 4.4.0_352 and my Discord Bot is unable to send message in the channel
[英]Discord Bot, Embed message wont send to the channel
我的机器人不会在 discord 中显示嵌入消息。 它打印的错误位于代码下方。 它命中了 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)
试试下面的代码:
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");
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();
}
}
}
setTitle 和 setFooter 都可以使用 1 arguments 而不是 2。因为如果这样做,默认情况下不会设置它们。 此外,每次您的代码通过 EmbedBuilder 时,它都会创建一个新的构建器。 所以你不需要清除它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.