如何从嵌入中排除 `+` 前缀

How to exclude the `+` prefix from embedding

我为我的 discord 创建了一个建议功能,用户可以说 +suggest(建议),它会自动 post 到另一个频道。

有些事情我需要帮助:

这是我的嵌入代码:

   module.exports.run = async (bot, message, args) => {
   let suggestembed = new Discord.RichEmbed()
  .addField("Suggestion made by:", message.author)
  .addField("Suggestion:", message.content)
  .setTimestamp()

这是它的外观图片:

https://gyazo.com/48e5c34fa463615180143403e52d5f49

要处理 +suggest 出现的问题,您可以将消息与其前缀分开。

const args = message.content.slice(1).trim().split(/ +/g);
let suggestion = args.slice(0).join(" ");

您可以在说明中设置它,而不是使用字段。像这样:

let suggestembed = new Discord.RichEmbed()
.setDescription(`**Suggestion made by:** ${message.author}\n**Suggestion:** ${suggestion}`)
.setTimestamp()

我现在无法测试它,它应该可以工作。如果有任何问题,请告诉我。

1

RichEmbed.addField() 接受两个参数:标题和内容。通过使用 .addField("Suggestion made by:", message.author),您将标题设置为 "Suggestion made by:",将内容设置为 message.author。要将所有内容放在一行中,您可以执行 .addField("Suggestion made by:" + message.author, '') 这会将标题设置为您想要的内容,并将内容留空。你也可以把它放在内容参数中,但注意标题不能为空。如果是,它将 return 出错。

解法:

module.exports.run = async (bot, message, args) => {
let suggestembed = new Discord.RichEmbed()
  .addField("Suggestion made by:" + message.author, '')
  .addField("Suggestion:", message.content)
  .setTimestamp();

module.exports.run = async (bot, message, args) => {
let suggestembed = new Discord.RichEmbed()
  .addField("MyTitle", "Suggestion made by" + message.author)
  .addField("Suggestion:", message.content)
  .setTimestamp();

2

您可以使用多种方法删除前缀。这里有一些。

  • 使用前缀拆分字符串:message.content.split("+suggest")[1]
  • 使用 str.substr() 切掉前缀:message.content.substr("+suggest".length)
  • 使用 str.substring() 切掉前缀:message.content.substring("+suggest".length)
  • 使用 str.slice() 切掉前缀:message.content.slice("+suggest".length)

希望对您有所帮助!