Скриптинг членства в группе

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

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

Спасибо!

РЕДАКТИРОВАНИЕ:

Пример ниже:
У меня есть три адреса электронной почты:
alice@example.com — принадлежит участнику форума, который не состоит в группе SomeGroup.
bob@foo.org — принадлежит участнику форума, который уже является членом группы SomeGroup.
carol@bar.edu — не принадлежит ни одному участнику форума.

Я хочу добавить пользователя, связанного с alice@example.com, в группу SomeGroup (и отправить приветственное сообщение), ничего не делать для пользователя bob@foo.org и отправить приглашение на форум с флагом автоматического вступления в группу для carol@bar.edu.

Вы можете настроить группу так, чтобы при регистрации пользователя с определенным доменом электронной почты (например, @example.com) он автоматически добавлялся в группу.

Перейдите на вкладку «Управление» группы, затем в раздел «Членство» и в первом разделе «Автоматически» добавьте домен.

Спасибо, но это не очень помогает в данном случае. Все наши участники используют для этого свои личные электронные адреса, поэтому у них нет общего домена.

Вы можете создать ссылку для приглашения и отправить её клиентам, но, насколько я понимаю, это сработает только если они ещё не зарегистрировались.

Перейдите на вкладку «Участники», нажмите «Пригласить», настройте приглашение и нажмите «Сохранить приглашение».

Если вы отправите ссылку-приглашение, она также будет работать для существующих участников. :+1: Вы даже можете направить их на конкретную тему, на которой они окажутся при входе, поэтому это может быть полезно для групповой регистрации или мероприятий.

Также есть функция массового приглашения, если у вас уже есть список адресов?

Не знал. Я посмотрел в вики, и там было указано только при создании аккаунта. Можете ли вы это исправить, так как это не вики? (Invite users to a group)

Позвольте привести пример, так как мой вопрос, вероятно, был неясен.

У меня есть три адреса электронной почты:
alice@example.com — принадлежит участнику форума, который не состоит в группе SomeGroup
bob@foo.org — принадлежит участнику форума, который является членом группы SomeGroup
carol@bar.edu — не принадлежит ни одному участнику форума.

Мне нужно, чтобы скрипт добавил пользователя, связанного с alice@example.com, в группу SomeGroup (и, возможно, отправил приветственное сообщение), ничего не делал для пользователя bob@foo.org, а для carol@bar.edu отправил приглашение с флагом автоматического зачисления в группу.

Ах, хорошо, я не знал об этом! Будет ли отправлено уведомление уже существующим участникам о том, что они добавлены в группу?

Вместо использования списка адресов электронной почты, вероятно, имеет смысл воспользоваться API. Таким образом, при регистрации пользователя вы можете автоматически добавлять его в группу, используя этот API: Discourse API Docs

Для этого пользователь должен уже быть создан в Discourse на момент вызова API. Это может потребовать немного дополнительной настройки, но позволит полностью автоматизировать процесс, избавив вас от необходимости вручную загружать адреса электронной почты пользователей.

Дело в том, что у меня на самом деле есть список адресов электронной почты, а не имена пользователей. Наша организация отслеживает уровни членства людей по имени и электронной почте, а не по имени пользователя на форуме, поскольку форум является лишь небольшой частью организации. Координатор по членству еженедельно присылает мне список имен и адресов электронной почты новых участников. У них может уже быть аккаунт на форуме, а может и не быть, так как у нас есть общедоступный раздел форума.

На самом деле, это не работает. Когда я пытаюсь отправить ссылку-приглашение, я получаю сообщение: «Нет необходимости приглашать example@gmail.com, у них уже есть учётная запись!»

Возможно, я сам запутался. :slight_smile: Позвольте мне разобраться и посмотреть, можно ли реализовать то, что вы хотите, используя существующие функции форума. :+1:

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

Думаю, это возможно с помощью опции «Массовое приглашение». Если у вас есть CSV-файл с адресами электронной почты и второй колонкой, в которой указаны группы, в которые нужно добавить этих пользователей, то запуск этого файла через инструмент «Массовое приглашение» отправит приглашение по электронной почте всем, у кого нет аккаунта, и добавит существующих участников в указанные группы. Однако есть один нюанс: при этом не будет генерироваться уведомление о том, что вы добавлены в группу.

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

Я разобрался со своей путаницей. Дело в том, что именно ссылки делают то, что я думал, а не письма. :slight_smile: Так что альтернативный вариант — создать ссылку-приглашение (вместо письма), а затем отправить её по электронной почте всем подписчикам вашего списка. Новые пользователи попадут на страницу «Создать аккаунт и принять приглашение» перед добавлением в группу и перенаправлением на тему (если вы добавили этот критерий), существующие пользователи, уже вошедшие в систему, будут добавлены в группу и сразу перенаправлены на указанную вами тему, а существующие пользователи, не вошедшие в систему, смогут войти со страницы «Создать аккаунт и принять приглашение» (хотя здесь есть небольшая неясность, можно ли это сделать, но вы можете добавить дополнительный текст на страницу в js.create_account.subheader_title, чтобы дать небольшую подсказку), после чего их добавят в группу и перенаправят на тему:

Однако этот способ также не отправляет уведомление о том, что пользователя добавили в группу, но у вас появляется возможность включить объяснение в исходное письмо-приглашение, что может быть полезно? Кроме того, функцию «переход к теме» можно использовать аналогичным образом в качестве целевой страницы.

Не знаю, поможет ли это, но я рад, что разобрался. :slight_smile: