Richie
(Richie Rich)
12.Сентябрь.2025 07:39:51
1
Когда пользователь удаляется из-за отклонения его первого сообщения, ему отправляется электронное письмо с темой Ваш аккаунт был удален.
В теле/содержимом письма есть ошибка: в средней части отображается какой-то синтаксис хэша Ruby:
Здравствуйте,
Это автоматическое сообщение от НАЗВАНИЕ САЙТА , информирующее о том, что учетная запись пользователя, связанная с этим адресом электронной почты, была удалена сотрудником.
{:off_topic=>“Ваше сообщение было помечено как не по теме : сообщество считает, что оно не соответствует теме, как она определена в заголовке и первом сообщении в настоящее время.”, :inappropriate=>“Ваше сообщение было помечено как неприемлемое : сообщество считает, что оно оскорбительно, агрессивно, выражает ненависть или нарушает наши правила сообщества.”, :illegal=>“Ваше сообщение было помечено как незаконное : сообщество считает, что оно может нарушать закон.”, :spam=>“Ваше сообщение было помечено как спам : сообщество считает, что это реклама, чрезмерно рекламный материал вместо полезного или релевантного для темы контента.”, :notify_moderators=>“Ваше сообщение было помечено для внимания модераторов : сообщество считает, что в сообщении есть что-то, требующее ручного вмешательства сотрудника.”, :responder=>{:off_topic=>“Сообщение было помечено как не по теме : сообщество считает, что оно не соответствует теме, как она определена в заголовке и первом сообщении в настоящее время.”, :inappropriate=>“Сообщение было помечено как неприемлемое : сообщество считает, что оно оскорбительно, агрессивно, выражает ненависть или нарушает наши правила сообщества.”, :spam=>“Сообщение было помечено как спам : сообщество считает, что это реклама, чрезмерно рекламный материал вместо полезного или релевантного для темы контента.”, :notify_moderators=>“Сообщение было помечено для внимания модераторов : сообщество считает, что в сообщении есть что-то, требующее ручного вмешательства сотрудника.”}}
Пожалуйста, ознакомьтесь с нашими правилами сообщества для получения подробной информации.
Ниже приведена скриншот письма, полученного пользователем, демонстрирующий форматирование:
Шаги для воспроизведения:
Убедитесь, что в Discourse требуется одобрение первого сообщения каждого пользователя.
Создайте нового пользователя.
Создайте новое сообщение от имени этого пользователя.
Используя учетную запись администратора, отклоните сообщение с опцией «Удалить пользователя».
Новому пользователю будет отправлено письмо с указанным выше содержимым.
2 лайка
Richie
(Richie Rich)
12.Сентябрь.2025 07:41:14
2
Если это поможет, вот несколько скриншотов из административной панели с отклонённым постом:
До удаления пользователя:
После отклонения и удаления:
1 лайк
selase
(Selase Krakani)
Разделил(а) эту тему
18.Ноябрь.2025 11:45:31
3
selase
(Selase Krakani)
12.Сентябрь.2025 18:24:44
4
Похоже, здесь ошибка в логике генерации flag_reason:
def account_deleted(email, reviewable)
post_action_type_id =
reviewable.reviewable_scores.first&.reviewable_score_type ||
PostActionTypeView.new.types[:spam]
build_email(
email,
template: "user_notifications.account_deleted",
flag_reason: I18n.t("flag_reasons.#{PostActionTypeView.new.types[post_action_type_id]}"),
)
end
PostActionTypeView.new.types не включает флаг :needs_approval (который создаётся в описанном потоке). Из-за этого ключ перевода разрешается как flag_reasons. (без суффикса), что возвращает весь раздел YAML вместо отдельной записи. Именно поэтому вместо причины флага отображается хэш Ruby.
flag_reasons:
off_topic: "Your post was flagged as **off-topic**: the community feels it is not a good fit for the topic, as currently defined by the title and the first post."
inappropriate: "Your post was flagged as **inappropriate**: the community feels it is offensive, abusive, to be hateful conduct or a violation of [our community guidelines](%{base_path}/guidelines)."
illegal: "Your post was flagged as **illegal**: the community thinks it might be breaking the law."
spam: "Your post was flagged as **spam**: the community feels it is an advertisement, something that is overly promotional in nature instead of being useful or relevant to the topic as expected."
notify_moderators: "Your post was flagged **for moderator attention**: the community feels something about the post requires manual intervention by a staff member."
responder:
off_topic: "The post was flagged as **off-topic**: the community feels it is not a good fit for the topic, as currently defined by the title and the first post."
inappropriate: "The post was flagged as **inappropriate**: the community feels it is offensive, abusive, to be hateful conduct or a violation of [our community guidelines](%{base_path}/guidelines)."
spam: "The post was flagged as **spam**: the community feels it is an advertisement, something that is overly promotional in nature instead of being useful or relevant to the topic as expected."
notify_moderators: "The post was flagged **for moderator attention**: the community feels something about the post requires manual intervention by a staff member."
Кроме того, это, вероятно, влияет и на пользовательские флаги, поскольку для них также будут отсутствовать переводы.
7 лайков
Moin
12.Сентябрь.2025 18:43:38
6
Я уверен, что так и есть. Я упоминал об этом в мае
Moin:
Moin:
Примечание:
3 лайка
selase
(Selase Krakani)
18.Ноябрь.2025 11:51:59
7
Мы внесли исправление проблемы, описанной в первом посте. Отчёт, касающийся пользователей в стадии подготовки, перемещён в отдельную тему , чтобы упростить отслеживание до момента внесения исправления.
main ← fix/deleted-user-email
merged 03:22PM - 17 Nov 25 UTC
`UserNotifications#account_deleted` builds a localized flag reason from the revi… ewable’s first `reviewable_score` (falling back to `spam` if none is found).
Currently, some score types (e.g. `needs_approval`) are not covered. In cases where a "Needs Approval" flag led to an account deletion, the lookup key could end up as `flag_reasons.`, causing the entire `flag_reasons`
section to be rendered instead of a single entry.
This change adds support for additional score types (like `needs_approval`). If no translation exists (e.g. custom flags), the flag’s description will be used if available, before falling back to the default `spam` reason.
More context: https://meta.discourse.org/t/ruby-hash-syntax-being-displayed-in-emails-sent-to-deleted-users/382411
1 лайк