我的 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 没有创建消息的主要内容,如果未能解决你的问题,请参考以下文章