Наблюдаемое одобрение не работает, если пользователь редактирует ответ

У нас много спам-аккаунтов, которые публикуют спам-ссылки на Amazon на нашем форуме. Я настроил отслеживание слов, чтобы перехватывать эти ссылки на Amazon, но это не сработало. Затем я провел более глубокое исследование и понял, как они уходят от внимания: сначала эти спам-аккаунты публикуют обычный ответ, а через несколько минут редактируют его и добавляют спам-ссылку на Amazon! Редактирование не срабатывало с отслеживанием слов! Я считаю, что это ошибка в Discourse. Можете ли вы это исправить?

Я попробовал добавить отслеживаемое слово в существующий пост на локальном сервере, и оно корректно заменило слово.

Можете ли вы привести конкретный пример со ссылкой, которая должна была быть удалена, и скриншотом ваших настроек отслеживаемых слов?

Спасибо! Вот пример спам-поста: https://www.uscardforum.com/t/topic/81665/3?u=uscreditcardguide

А вот наши настройки отслеживаемых слов:

Ваш отслеживаемый текст — t.co/, а ссылка в спам-сообщении — https://t.co/rX42eIcsjD, поэтому должно сработать правило отслеживания. Однако, возможно, причина в том, что ссылка визуально выглядит следующим образом, и поэтому применяется настройка отслеживания для неё, а не для t.co/.

Разберусь с этим подробнее.

Спасибо. Ниже приведён точный ответ, скопированный нашей учётной записью администратора, и я надеюсь, что это поможет вашему исследованию:

Спасибо за ссылку! Говоря об Apple, наушники Apple AirPods Pro сейчас со скидкой 30%, ссылка: www.amazon.com/dp/B09JQMJHXY,
как вам такая цена?

Я изменил заголовок, чтобы он точнее отражал проблему. В интерфейсе ничего не указывает на то, что нельзя использовать URL в качестве отслеживаемого слова, но в данный момент это не работает. Мы разбираемся в этом и вернёмся с обновлением, как только появится информация.

Также я не на 100% уверен, что это баг. Что вы думаете, @JammyDodger?

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

Привет, заголовок, который вы отредактировали, не отражает суть проблемы. Я снова проверил сегодня: если пользователь размещает ссылку напрямую, отслеживаемое слово работает в URL. Проблема возникает только тогда, когда пользователь сначала размещает сообщение, а затем редактирует ответ. Процесс редактирования и сохранения не запускает функцию отслеживания слов.

См. выше. Проблема не в том, работает ли отслеживаемое слово в URL. Проблема в том, что при редактировании пользователем своего ответа функция отслеживания слова не работает.

Вот как воспроизвести ошибку:

Добавьте «thisisjustatest» в список отслеживаемых слов.

Зайдите под неадминистратором, отправьте ответ с фразой «thisisjustatest» — сработает срабатывание отслеживаемого слова.

Зайдите под неадминистратором, отправьте ответ сначала с другими словами, затем отредактируйте его, добавив слово «thisisjustatest» — срабатывание отслеживаемого слова НЕ произойдёт, и пользователь сможет успешно добавить это слово в ответ.

Я попробовал. :+1:

  • Добавил thisisjustatest в список заблокированных отслеживаемых слов
  • Использовал тестового пользователя TL2 для публикации сообщения This is a reply
  • Открыл сообщение в режиме редактирования, оставаясь под пользователем TL2
  • Вставил thisisjustatest вместе с существующим текстом This is a reply
  • Сохранил

  • Отслеживаемые слова успешно заблокировали редактирование
  • Повторил тест с параметром editing grace period, установленным на 1. Результат тот же

Однако, когда я попытался добавить t.co/ в список заблокированных отслеживаемых слов и использовал тестового пользователя TL2 для публикации спама 谢谢分享~ 说到apple,apple airpods pro耳机在30% off,link: [www.amazon.com/dp/B09JQMJHXY](https://t.co/rX42eIcsjD) , 这种价格怎样?, система позволила опубликовать сообщение с первого раза, без необходимости возвращаться к редактированию. (Я забыл добавить подстановочные знаки :slightly_smiling_face:)

Вы пробовали опубликовать эту ссылку на своём собственном сайте? И сработал ли тест с thisisjustatest для вас? Если да, можете ли вы предоставить дополнительные детали, чтобы я мог воспроизвести тот же результат на моём тестовом сайте?

Я провёл тот же тест, и пользователь с уровнем доверия 1 может добавить «thisisjustatest» без каких-либо проблем через редактирование. В частности, я добавил «thisisjustatest» в список отслеживаемых слов с типом «требует одобрения». Возможно, это отличие в наших тестах?

Да, это и есть разница. Я попытался добавить «thisisjustatest» в тип «блокировать» в списке отслеживаемых слов, и редактирование будет заблокировано, если новый ответ содержит отслеживаемое слово. Однако отслеживаемое слово типа «требует одобрения» не работает при редактировании.

Когда пользователь с уровнем доверия 1 публикует это сообщение напрямую, отслеживаемое слово работает корректно и отправляет сообщение администратору для предварительного одобрения: «Спасибо за分享~ Говоря об Apple, наушники Apple AirPods Pro со скидкой 30%, ссылка: [www.amazon.com/dp/B09JQMJHXY](https://t.co/rX42eIcsjD), как вам такая цена?»

Проблема возникает только тогда, когда пользователь редактирует существующий пост.

Думаю, для моей конкретной проблемы я могу просто переместить отслеживаемое слово *t.co/* из списка «требовать одобрения» в список «блокировать».

Тем не менее, я всё ещё считаю, что это ошибка, что редактирование позволяет обойти отслеживаемое слово типа «требовать одобрения». Решать вам, считать ли это ошибкой и исправлять её или оставить как есть.

Кажется, я забыл добавить подстановочные знаки для теста t.co/. :slightly_smiling_face: Запуск с *t.co/* действительно блокирует спам-ссылку с первого раза, как и задумывалось. :+1:

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