从消息字符串中删除提及代码

时间:2020-05-27 01:03:52

标签: javascript regex string

目前,我正在使用 discord.js markov 创建一个机器人来训练我的消息,然后在提及时使用我的训练数据进行回复。问题是,我在消息中植入了markov链,但是当消息中提到嵌入消息时,该机器人很快就会发疯,并陷入提及炸弹中。

任何提及的基本格式为:全部以<@开头,之后以!为后缀,然后以18位唯一ID开头,以>结尾。因此<@!372507467289985025><@372507467289985025> discord.js 产生的有效提及。

我的问题是如何如何从节点的消息字符串中删除此类提及?我知道它必须使用通配符/正则表达式来制作,但是我找不到匹配所有变体的正确模式。

2 个答案:

答案 0 :(得分:1)

我不知道您是否还在寻找答案,但是如果您这样做:

@if(auth.user.id == post.user_id)
            <div class="all-edit">
                <div class="post-body">
                    <a href="/posts/edit/{{ post.id }}">(Edit)</a>
                </div>
            </div>
            @endif

这将匹配所有内容,包括<@和>之间的内容。您可以在https://regexr.com/上测试正则表达式是否匹配

答案 1 :(得分:0)

我认为您要问的是如何从数组的元素中删除属性。这可以通过.map调用来轻松完成,以遍历数组并构造一个新数组:

const messagesWithoutMentions = message.content.map((message) => {
  const { mentions, ...rest } = message; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#Rest_syntax_parameters
  return { ...rest };
});