这是我的命令设置方式:
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)。
答案 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();
}
}
只使用一行,你就可以让机器人轻松模仿你的论点。