【问题标题】:I want to make the bot send a message on Discord but it gives me Error in Java JDA我想让机器人在 Discord 上发送消息,但它给了我 Java JDA 中的错误
【发布时间】:2023-03-21 16:28:01
【问题描述】:

我编写了代码,一开始它可以工作,但是当我输入提到机器人的命令“$info”时,它会显示下面提到的错误。请问我需要帮助

测试机器人类 这是令牌的类,这段代码可以正常工作并使机器人在线没有任何问题,但问题出在第二类

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 classThis是当我输入discord $info时应该出现的消息的类,但它给了我以下问题,并告诉我问题出在这一行

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 this command "$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)

【问题讨论】:

    标签: java api discord-jda


    【解决方案1】:

    net.dv8tion.jda.api.exceptions.InsufficientPermissionException:由于缺少权限而无法执行操作。缺少权限:MESSAGE_EMBED_LINKS

    这告诉你一切。

    您尝试使用

    发送嵌入消息
    event.getChannel().sendMessage(info.build()).queue();
    

    但是,机器人需要MESSAGE_EMBED_LINKS 的权限才能发送嵌入消息。

    授予机器人在频道或公会中的权限。

    请注意,频道权限会覆盖公会权限。

    【讨论】:

    • 非常感谢,问题已经解决了。我没有在 Discord 中授予它权限
    • 如果机器人有权限就可以工作,如果机器人没有权限就不行。
    • 非常感谢,问题已经解决了。我没有在 Discord 中授予它权限
    • 这就是我写的。
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2020-01-10
    • 1970-01-01
    • 2021-08-19
    • 2018-06-02
    • 2021-11-24
    相关资源
    最近更新 更多