你会如何为一个不和谐机器人制作!!声明命令?

时间:2018-04-08 16:54:50

标签: java bots discord discord-jda

这是我的命令设置方式:

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)。

3 个答案:

答案 0 :(得分: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条件是合乎逻辑的。以原始格式获取Messages as String并查找以“!! say”开头的字符串。然后将新消息发送到收到消息的频道,其中消息是原始消息,因为前五个字符(“!!说”)的字符串被截断。所以Bot在命令标签旁边重复整个消息。

希望这能为您带来前进的使命。

答案 1 :(得分: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)所以它说完了所有内容!!但是请确保它创建类似String prefix = "!!";的内容,因为我可能无法使用if语句中的前缀。 + 4计数在前缀和用户输入之间的空格之后。 例如:

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

因为"urban"有5个字符,所以您可以使用6来计算空格。 希望有所帮助。

答案 2 :(得分: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();
}

}

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