我的 Discord Bot 的 EmbedBuilder 没有创建消息

Posted

技术标签:

【中文标题】我的 Discord Bot 的 EmbedBuilder 没有创建消息【英文标题】:My EmbedBuilder for my Discord Bot is not creating the message 【发布时间】:2021-10-26 11:10:22 【问题描述】:

我的机器人有点问题。我想创建一个“!command”来显示嵌入消息中的所有可用命令。但是如果我尝试运行它,我会得到错误:java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0

它还说,嵌入消息的 sendMessage-Method 已被弃用。

这是我的代码:

公共类命令扩展了 ListenerAdapter

public void onGuildMessageReceived(GuildMessageReceivedEvent event) 

    String[] args = event.getMessage().getContentRaw().split("\\s+");

    // der angegebene Member
    Member member = event.getMessage().getMentionedMembers().get(0);

    // der angegebene User
    User user = event.getMessage().getMentionedUsers().get(0);

    // der command für einen kick
    if (args[0].equalsIgnoreCase(Main.prefix + "hauste")) 
        event.getChannel().sendMessage("Hauste rein " + args[1]).queue();

        sendMess(user, "Wurdest halt gekickt ");

        member.kick("Bye").queue();

        // der command für einen spam
     else if (args[0].equalsIgnoreCase(Main.prefix + "spam")) 
        for (int i = 0; i < Integer.parseInt(args[2]); i++) 
            sendMess(user, args[3]);
        
     else if (args[0].equalsIgnoreCase(Main.prefix + "commands")) 
        EmbedBuilder commands = new EmbedBuilder();
        commands.setTitle("Alle Commands", null);
        commands.setDescription(
                "1. Kick :   !kick @user" + "2. Spam :   !spam @user Anzahl der Nachrichten Nachricht");
        commands.setColor(Color.red);

        event.getChannel().sendMessage(commands.build()).queue();
    



/**
 * Extra Methode um dem User eine Nachricht zu schicken
 * 
 * @param user Der angegebene User
 * @param text Der gewünschte Text
 */
public void sendMess(User user, String text) 
    user.openPrivateChannel().queue((channel) -> 
        channel.sendMessage(text).queue();
    );

有人知道如何解决这个问题吗?

芬恩

【问题讨论】:

如果没有人提到你的get(0) 将会抛出。 @Minn 你将如何检查它?现在我这样做: if (!event.getMessage().getMentionedMembers().isEmpty() && !event.getMessage().getMentionedUsers().isEmpty()) @Minn 但是当我编码时,我经常会卡住。它来自那个 if 子句吗? 【参考方案1】:

您可能想要检查消息是否包含 \s+,如果不只是在聊天中返回或发送错误消息

【讨论】:

以上是关于我的 Discord Bot 的 EmbedBuilder 没有创建消息的主要内容,如果未能解决你的问题,请参考以下文章

我的 Discord Bot 在触发时不断发送相同的图像

使用 discord bot 可以将音频从我的 DAW 流式传输到 Discord 吗?

如何让我的 Discord Bot 提及我提及的人?

我的 Discord Bot 中“没有名为 'dotenv' 的模块”

为啥我的 Heroku discord bot 没有上线?

Discord.py Bot 将文件发送到 Discord 频道