【问题标题】:Split args Discord.js拆分参数 Discord.js
【发布时间】:2021-07-14 14:05:50
【问题描述】:

我正在尝试 split args 不是只是空格。我正在尝试在不同的参数中添加空格以创建动态嵌入。

'!嵌入标题;作者;描述'

但我的代码实际上将命令(“嵌入”)作为第一个参数(“标题”)发送。我怎样才能防止这种情况发生?

'消息'事件:

let input = message.content;
let prefix = input[0];
let command = input.substr(1).split(' ')[0];
let args = command.substr( command.indexOf(' ') + 1 );

命令:

args = args.split(';').map(elem => elem.trim());
let [autor, titulo, texto] = args;
message.channel.send(
   new Discord.MessageEmbed()
      .setAuthor(autor, '')
      .setTitle(titulo)
      .setDescription("\n\n"+texto)
      .setColor("000000")
);

【问题讨论】:

  • 检查这个(stackoverflow.com/a/66660875/10675707) 答案也许这有助于你实现你想要达到的目标(不是这个问题的答案)
  • 不只是嵌入,我想为其他命令这样做

标签: javascript discord.js


【解决方案1】:

您可以像这样将message content 拆分为实际的commandargs

const input = "!myCommand my first arg;arg2;arg3";
const args = input.slice(1).substring(input.indexOf(' ')).split(';');
const command = input.slice(1).split(' ').splice(0, 1)[0];

console.log(`Command: ${command}`);
console.log('Args: ' + args);

参考文献

【讨论】:

  • 这正是我不想做的。例如,我想标题字符串可以包含空格,所以用空格分割参数不是一种方法。
  • 您可以用空格分隔args,如果您需要在 one 参数中使用空格,您可以使用 下划线,例如!embed This_is_my_title;Author;Description。然后,您可以在之后用空格替换下划线。
  • 我确信有更好的解决方案。
  • 我在问这个话题之前看到了。使用它,命令(在本例中为 anuncio)被识别为唯一参数,而其他参数则被忽略。所以嵌入看起来像这样i.imgur.com/UTYF5bo.png
猜你喜欢
  • 2021-10-04
  • 1970-01-01
  • 2014-02-05
  • 2014-06-13
  • 1970-01-01
  • 2019-09-04
  • 2021-04-13
  • 1970-01-01
  • 2011-07-25
相关资源
最近更新 更多