目前,我正在使用 discord.js 和 markov 创建一个机器人来训练我的消息,然后在提及时使用我的训练数据进行回复。问题是,我在消息中植入了markov链,但是当消息中提到嵌入消息时,该机器人很快就会发疯,并陷入提及炸弹中。
任何提及的基本格式为:全部以<@
开头,之后以!
为后缀,然后以18位唯一ID开头,以>
结尾。因此<@!372507467289985025>
和<@372507467289985025>
是 discord.js 产生的有效提及。
我的问题是如何如何从节点的消息字符串中删除此类提及?我知道它必须使用通配符/正则表达式来制作,但是我找不到匹配所有变体的正确模式。
答案 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 };
});