Не удается игнорировать пользователя через API

Привет, друзья,

Я разрабатываю мобильное приложение форума, используя API Discourse, и Google требует, чтобы все приложения с пользовательским контентом имели функцию блокировки.

Я провёл небольшое исследование и выяснил, что в Discourse пользователь может игнорировать другого пользователя, что, по-видимому, удовлетворяет этому требованию.

Однако при использовании следующего API для игнорирования пользователя я получаю ошибку 422 с сообщением: «Извините, вы не можете игнорировать этого пользователя» для любого пользователя, которого я пытаюсь игнорировать.

u/{username}/notification_level.json
с параметром
notification_level=ignore

Подскажите, пожалуйста, почему это происходит?

Заранее спасибо и наилучшие пожелания,
Крис

Привет и добро пожаловать, @chrisbai2021 :slight_smile:

Функция игнорирования зависит от уровня доверия, поэтому возможно, что ваш тестовый пользователь ещё не достиг уровня TL2 (уровень по умолчанию для использования этой функции).

Также вы не можете игнорировать администраторов и модераторов, поэтому всё зависит от того, кого именно вы пытаетесь игнорировать. :slight_smile:

Привет @JammyDodger, спасибо за быстрый ответ.

Это имеет смысл — похоже, это означает, что нам нужно при регистрации по умолчанию назначать всем уровень TL2, чтобы соответствовать требованиям Google…

Ещё раз спасибо!

В качестве альтернативы вы можете изменить настройку «Минимальный уровень доверия для игнорирования»:

Также есть функция «заглушить», которая может вас заинтересовать в зависимости от ваших потребностей. Она доступна всем.

А вот тема с описанием множества функций и соответствующих им уровней доверия, а также связанных с ними настроек администратора: :slight_smile: :+1: Таблица разрешений по уровням доверия (включая роли модераторов)

Отлично, спасибо за эти подсказки!

Я попытался создать TL2 и снизить минимальный уровень доверия, чтобы разрешить игнорирование для TL0. Однако теперь я получаю ошибку 500.

Для проверки я изменил предоставленный notification_level на mute, и запрос прошел успешно.

Интересно, есть ли настройка сайта, которая включает функцию игнорирования в принципе… Я искал в настройках администратора, но пока ничего не нашел…

Ох, думаю, мне, возможно, придётся указать expiring_at

Посмотрев на запрос, который отправляется при выполнении действия в интерфейсе, возможно, вам потребуется добавить временной интервал:

Редактирование:

Ах, вы меня опередили. :slight_smile:

Удивительно, спасибо! Это очень полезно :slight_smile:

Это сработало!! Но у меня остался один последний вопрос…

Похоже, что посты от игнорируемых пользователей скрыты, но темы — нет. Это наблюдается и в веб-интерфейсе. Это ожидаемое поведение?

Ага, похоже, мне нужно использовать ignored_usernames в объекте пользователя, чтобы реализовать скрытие :slight_smile: