Удалить коды упоминаний из строк сообщений - PullRequest
0 голосов
/ 27 мая 2020

В настоящее время я использую discord. js и markov , чтобы создать бота, который тренируется в моих сообщениях, а затем, когда упоминается, отвечает, используя мои обученные данные. Проблема в том, что я заполняю марковскую цепочку сообщениями, но когда в сообщениях есть упоминания, встраиваемый бот быстро сходит с ума и ныряет в бомбу упоминаний.

Базовый формат c любого упоминания - : все начинаются с <@, за которым следует или без !, затем следует уникальный идентификатор 18-di git и заканчивается >. Итак, <@!372507467289985025> и <@372507467289985025> являются действительными упоминаниями, созданными discord. js.

Мой вопрос: как могу я удалить такие упоминания из строки сообщения в узле? Я знаю, что это нужно сделать с помощью подстановочных знаков / регулярных выражений, но я не могу найти правильный шаблон, который соответствует всем вариантам.

Ответы [ 2 ]

1 голос
/ 12 июля 2020

Я не знаю, ищете ли вы все еще ответ, но если вы его найдете:

let mention = /<@(.*?)>/;

Это будет соответствовать всему, включая, между <@ и>. Вы можете протестировать регулярные выражения на https://regexr.com/ на совпадения

0 голосов
/ 27 мая 2020

Я думаю, вы спрашиваете, как удалить свойство из элементов в массиве. Это легко сделать с помощью вызова .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 };
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...