-2

这就是我的命令的设置方式:

public void onMessageReceived(MessageReceivedEvent evt) {

    //Objects
    User objUser = evt.getAuthor();
    MessageChannel objMsgCh = evt.getChannel();
    Message objMsg = evt.getMessage();

    //Commands
    if(objMsg.getContentRaw().equalsIgnoreCase(Ref.prefix+"say " + message))
    {
    StringBuilder message = new StringBuilder();
    for(int i = 1; i < command.length; i++) {
           if(i == command.length-1) {
               message.append(command[i]);
           }else {
               message.append(command[i] + " ");
           }
       }

    objMsgCh.sendMessage(message.toString()).queue();

    objMsg.delete();
    return;
    }
}

它没有回复任何东西,我不明白为什么。我正在使用 JDA(Java Discord API)。

4

3 回答 3

1

尊重您的创造力,但我认为您缺少一些基本的 Java 知识。这是我认为您的目标:

public void onMessageReceived(MessageReceivedEvent event){
    if(event.getMessage().getContentRaw().startsWith("!!say")){
        event.getChannel().sendMessage(event.getMessage().getContentRaw().substring(6)).queue();
        event.getMessage().delete().queue();
    }
}

我认为 if 条件是合乎逻辑的。以原始格式获取消息作为字符串并查找以“!!say”开头的字符串。然后将新消息发送到接收消息的通道,其中消息是原始消息,因为前五个字符(“!!say”)的字符串被截断。所以机器人在命令标签旁边重复整个消息。

希望这能让你在你的使命中前进。

于 2018-04-08T22:39:16.447 回答
0

我想出了怎么做。

public void onMessageReceived(MessageReceivedEvent evt) {

//Objects
User objUser = evt.getAuthor();
MessageChannel objMsgCh = evt.getChannel();
Message objMsg = evt.getMessage();

if(objMsg.getContentRaw().startsWith(Ref.prefix+"say"))
{
    String words = objMsg.getContentRaw().substring(Ref.prefix.length() + 4);
    String more_words = words;
    objMsgCh.sendMessage(more_words).queue(); 

你真的不需要String more_words = words; 而且我这样做(Ref.prefix.length() + 4)了,它会在 !!say 之后说出所有内容,但请确保让它创建类似的东西,String prefix = "!!";因为我可能无法使用 if 语句中的前缀来创建它。+ 4在前缀和用户输入之间的空格之后的每个计数。例如:

if(objMsg.getContentRaw().startsWith(Ref.prefix+"urban")) { String query = objMsg.getContentRaw().substring(Ref.prefix.length() + 6);

因为"urban"有 5 个字符,所以你会放 6 个字符来占空间。希望有帮助。

于 2018-04-08T22:58:03.080 回答
0

如果您计划使用 JDA-Utilities,以下代码将用于创建命令。

public class sayCommand extends Command {
public sayCommand() {
    this.help = "!say <message>";
    this.aliases = new String[] {"!s"};
    this.name = "say";
}

@Override
protected void execute(CommandEvent event) {
    event.getChannel().sendMessage(event.getMessage().getContentDisplay().split("\\s+", 2)[1]).queue();
}

}

仅使用一行,您就可以让机器人轻松模仿您的论点。

于 2018-05-17T22:03:43.190 回答