我编写了代码并且它一开始可以工作,但是当我键入机器人提到的命令“$info”时,它向我显示了下面提到的错误。请我需要帮助
测试机器人类 这个是token的类,这段代码可以正常工作,让bot上线没有任何问题,但问题出在第二类
package testbot1;
import javax.security.auth.login.LoginException;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
public class Testbot1 {
public static JDA jda;
public static String prefix = "$";
public static void main(String[] args) throws LoginException {
JDA jda = JDABuilder.createDefault("The Token Here").build();
jda.addEventListener(new commands());
}
}
commands class这是我输入discord $info时应该出现的消息的类,但它给了我以下问题,并告诉我问题出在这一行< /p>
event.getChannel().sendMessage(info.build()).queue();
package testbot1;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
public class commands extends ListenerAdapter {
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
String[] args = event.getMessage().getContentRaw().split("\\s+");
if (args[0].equalsIgnoreCase(Testbot1.prefix + "info")) {
EmbedBuilder info = new EmbedBuilder();
info.setTitle("ElhadedyBot");
info.setDescription("Currently, this bot is for testing only");
info.setColor(0xf45642);
info.setFooter("Created by Youssefeka116", event.getMember().getUser().getAvatarUrl());
event.getChannel().sendTyping().queue();
event.getChannel().sendMessage(info.build()).queue();
info.clear();
}
}
}
这是我输入 Discord 这个命令“$info”时出现的错误
[JDA MainWS-ReadThread] ERROR JDA - One of the EventListeners had an uncaught exception
net.dv8tion.jda.api.exceptions.InsufficientPermissionException: Cannot perform action due to a lack of Permission. Missing permission: MESSAGE_EMBED_LINKS
at net.dv8tion.jda.internal.entities.AbstractChannelImpl.checkPermission(AbstractChannelImpl.java:329)
at net.dv8tion.jda.internal.entities.AbstractChannelImpl.checkPermission(AbstractChannelImpl.java:320)
at net.dv8tion.jda.internal.entities.TextChannelImpl.sendMessage(TextChannelImpl.java:358)
at testbot1.commands.onGuildMessageReceived(commands.java:19)
at net.dv8tion.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:445)
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:151)
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)
答案 0 :(得分:1)
net.dv8tion.jda.api.exceptions.InsufficientPermissionException:由于缺乏权限而无法执行操作。缺少权限:MESSAGE_EMBED_LINKS
这会告诉你一切。
您尝试使用
发送嵌入消息event.getChannel().sendMessage(info.build()).queue();
但是,机器人需要 MESSAGE_EMBED_LINKS
权限才能发送嵌入消息。
在频道或公会中授予机器人权限。
注意频道权限会覆盖公会权限。