# 处理已取消的会员资格

**URL:** <https://meta.discourse.org/t/handling-cancelled-memberships/131058>\
**Category:** Support\
**Created:** [2019年十月15日 16:40 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058 "2019-10-15T16:40:25Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![markwill](https://avatars.discourse-cdn.com/v4/letter/m/90db22/32.png) [@markwill](https://meta.discourse.org/u/markwill)\
**Post date:** [2019年十月15日 16:40 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058/1 "2019-10-15T16:40:26Z")

</div>

我正在使用 WordPress SSO 来授权已购买会员资格的用户（我在 WordPress 中实现了自定义逻辑来判断他们是否为会员）。一切运行正常，但我想知道如何处理已取消会员资格的用户。

显然，取消会员资格意味着他们将无法登录。不幸的是，我仍然需要手动将他们登出，以防他们在取消后继续访问论坛并保持会话活跃（手动操作本是我在从 Facebook 群组迁移后希望避免的）。

但我还有两个额外的顾虑：

- 他们在论坛发布的主题/帖子会发生什么？我希望这些内容保留，因此我推测这意味着我不能删除该用户。
- 我确实希望确保不再向已取消会员资格的用户发送摘要邮件。Discourse 在我不采取“某些操作”之前，完全不知道该账户已被取消。具体该做什么呢？前提是我不想删除他们的内容。

是否可以通过用户停用（user suppression）来解决所有问题？是否有自动化此过程的最佳实践？我假设需要某种形式的自定义代码，但想确认一下是否有可能避免这样做。

谢谢。

---

<div class="post-metadata">

**Author:** ![marianord](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marianord/32/90502_2.png) [@marianord](https://meta.discourse.org/u/marianord)\
**Post date:** [2019年十月15日 16:49 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058/2 "2019-10-15T16:49:30Z")

</div>

> [@markwill](#):
>
> 他们发布的主题/帖子会怎样？

您可以将其匿名化。这样信息得以保留，但用户身份会被隐藏。

另一个可行的方案是实施自定义逻辑：在创建用户时，不直接创建用户账户，而是将其添加到一个新组中。这样，摘要内容就仅限于能够访问该分类的用户可见。

您还可以执行某种定时任务（cronjob），强制注销（或移除）所有已取消账户的用户。

---

<div class="post-metadata">

**Author:** ![markwill](https://avatars.discourse-cdn.com/v4/letter/m/90db22/32.png) [@markwill](https://meta.discourse.org/u/markwill)\
**Post date:** [2019年十月15日 17:04 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058/3 "2019-10-15T17:04:12Z")

</div>

谢谢你，@marianord。恐怕我还没有完全理解第二段。当你提到“而不是创建用户”时，你指的是用户生命周期的哪个阶段？我可能忽略了一个简单的要点，但我不太清楚这个建议的具体含义。能否请你澄清一下？

另外，我会查看匿名化功能，但对此有几个问题：

- 他们的内容在显示时，帖子旁边的用户名会如何呈现？
- 如果我成功让他们重新订阅我的会员（使用相同的电子邮件等），这是否会影响匿名化？也就是说，他们之前的帖子是否会再次显示他们的用户名？

再次感谢。

---

<div class="post-metadata">

**Author:** ![markwill](https://avatars.discourse-cdn.com/v4/letter/m/90db22/32.png) [@markwill](https://meta.discourse.org/u/markwill)\
**Post date:** [2019年十月15日 17:07 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058/4 "2019-10-15T17:07:00Z")

</div>

顺便提一下，我在此事中最担心的是摘要邮件，因为这是面向客户的操作（即发送邮件）。我想另一个选项是手动将他们的摘要配置更改为永不发送，对吗（尽管这又是一个手动步骤，但希望最终能通过某种 API 实现）。

如果可行，那么我实际上无需对用户进行任何操作。他们可以保留为 Discourse 中的有效用户，邮件将停止发送（见上文），但他们将无法再登录。

也许这样可行。对此您有什么看法？

---

<div class="post-metadata">

**Author:** ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)\
**Post date:** [2019年十月15日 17:51 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058/5 "2019-10-15T17:51:19Z")

</div>

> [@markwill](#):
>
> 我想知道如何处理已取消的会员。

通过 Discourse API 暂停用户可能是自动化此过程的好方法。当用户被暂停时，他们会被从 Discourse 登出，并且将不再接收摘要邮件。如果在暂停用户时提供了`message`，该消息将作为电子邮件发送给用户。这可用于鼓励他们续订会员资格。

需要注意的是，暂停功能原本是为处理难缠用户而设计的，并非针对可能在未来续订的过期会员情况。您可能会发现需要自定义站点的 `user_notifications.account_suspended.text_body_template` 文本，以调整发送给被暂停用户的电子邮件模板。

> [@markwill](#):
>
> 此外，我会查看匿名化功能，但有几个相关问题。
> 
> - 他们的内容在帖子旁显示的用户名方面会如何呈现？
> - 如果我成功让他们重新订阅我的会员资格（使用相同的电子邮件等），这是否会“取消匿名化”？也就是说，他们以前的帖子是否会重新显示他们的用户名？

由匿名化用户创建的帖子显示如下：

 ![image](https://global.discourse-cdn.com/meta/original/3X/c/d/cd7f7963b8ed5b02fde5d1a68b7901c51dcc9c74.png)

目前没有简单的方法来取消用户的匿名化。我所知道的唯一方法是通过 Rails 控制台将匿名用户与新用户合并。由于匿名化会删除用户的所有识别数据，因此可能很难确定要合并哪些账户。如果用户有可能续订会员资格，暂停用户可能是更好的选择。

---

<div class="post-metadata">

**Author:** ![markwill](https://avatars.discourse-cdn.com/v4/letter/m/90db22/32.png) [@markwill](https://meta.discourse.org/u/markwill)\
**Post date:** [2019年十月15日 18:04 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058/6 "2019-10-15T18:04:35Z")

</div>

谢谢，@simon，这非常有帮助。

是的，根据你的说法，暂停似乎是这里正确的做法。但我对发送的电子邮件有一个疑问。我有基于 CRM 的电子邮件，当用户取消时会发送，所以我不希望 Discourse 发送任何内容。

你提到：“如果在暂停用户时提供了 `message`，该消息将作为电子邮件发送给用户。”

如果我不提供消息，是否意味着不会发送任何内容，我也完全不需要更新模板（因为它永远不会被发送）？

只是关于暂停功能，我对“暂停原因”和电子邮件字段的使用方式有点不清楚。

基本上，我的目标是暂停用户，除此之外什么都不做 🙂

再次感谢。

---

<div class="post-metadata">

**Author:** ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)\
**Post date:** [2019年十月15日 18:37 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058/7 "2019-10-15T18:37:21Z")

</div>

> [@markwill](#):
>
> 如果我不提供消息，是否意味着不会发送任何内容，我也完全不需要担心更新模板（因为它永远不会被发送）？

这是正确的。测试的最简单方法是创建一个使用一次性邮箱地址的用户，并通过界面尝试暂停和恢复其账户。

> [@markwill](#):
>
> 我对“暂停原因”和电子邮件字段的使用方式有些不清楚。

当用户被暂停时，必须设置 `suspended_until` 和 `reason` 字段。这些字段会在被暂停用户尝试登录网站时显示给他们。您可以通过在“管理 / 自定义 / 文本”页面搜索 `login.suspended_with_reason` 来自定义此文本。

除非您启用了 `hide suspension reasons` 站点设置，否则被暂停用户的用户卡片和个人资料页面上会显示一条通知，说明该用户已被暂停。如果您启用了 `hide suspension reasons` 站点设置，则只有工作人员能看到该通知。

---

<div class="post-metadata">

**Author:** ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)\
**Post date:** [2023年六月23日 02:17 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058/8 "2023-06-23T02:17:00Z")

</div>



---

<div class="post-metadata">

**Author:** ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)\
**Post date:** [2023年六月23日 05:55 UTC](https://meta.discourse.org/t/handling-cancelled-memberships/131058/9 "2023-06-23T05:55:43Z")

</div>


