nodeloc/flarum-auto-moderator

根据活动自动分配组。

安装: 37

依赖关系: 0

建议者: 0

安全: 0

星星: 0

关注者: 0

分支: 5

类型:flarum-extension

0.0.3 2024-08-30 00:00 UTC

This package is auto-updated.

Last update: 2024-08-30 00:00:58 UTC


README

License Latest Stable Version

Flarum 扩展。

更改。

修复 2 个问题

  • 无法编辑用户信息。
  • 编辑用户信息时,所有自动化组将丢失。

核心概念

核心思想如下

当用户满足条件 X 时,执行 Y。当用户不再满足条件 X 时,执行 Z。

让我们定义一些关键术语

  • 条件组:用户满足的所有条件的集合。
  • 条件(单数:标准):任意条件集合。条件与触发器和动作配对,由以下组成
    • 指标:数值条件。例如,帖子数或收到的点赞数。条件可能需要指标的范围/最小值/最大值。
    • 需求:抽象布尔条件。例如,未被暂停或拥有匹配特定正则表达式的电子邮件。
  • 动作:当满足条件或失去条件时自动发生的操作。这可能包括添加/删除组、发送电子邮件或暂停用户等。
  • 触发器:会导致用户条件组重新评估的事件集合。这些与指标和需求相关联。`LoggedIn` 是所有条件自动的触发器。

这使得这个扩展功能极其强大。此外,由于扩展可以添加自己的指标、需求和动作,这个扩展可以自动化大量的管理。除了以下列出的示例之外,可能的一些事情包括

  • 自动化分配成就/徽章
  • 当用户达到阈值(或仅当注册时)时发送电子邮件/通知用户
  • 建立类似于 Discourse 的“信任级别”系统
  • 当用户获得/失去某些组成员资格时,将用户从外部系统中加入或移除
  • 还有很多其他的东西!可能性是无限的。

评估

当触发事件发生时

  • 将为相关用户计算所有指标(指标的数值是多少?)
  • 将为相关用户计算所有需求(用户是否满足每个需求?)
  • 将计算并比较用户的新条件组和当前条件组。将比较这两个集合。只有由事件触发的条件将进行调整。
  • 将为获得和失去的条件执行动作。

您还可以使用 php flarum criteria:recalculate 控制台命令重新计算所有用户的条件。请注意,这会非常慢,通常不应这样做。

示例

示例 1:组管理

条件:获得 50 个或更多点赞并且已发起至少 10 个讨论的用户应放入“活跃”组。

在这里,指标是“获得 50 个或更多点赞”和“已发起至少 10 个讨论”。不出所料,它们分别与触发器(`PostWasLiked`、`PostWasUnliked`)和(`Discussion\Started`)相关。

动作是

  • 当条件满足时,将用户添加到“活跃”组
  • 当条件失去时,从“活跃”组中移除用户

示例 2:暂停

条件:如果一个用户获得 15 个或更多警告并且不是管理员,则暂停他们。

在这里,指标是“获得 15 个或更多警告”和需求是“不是管理员”。触发器将是针对指标的新的警告。需求没有触发器。

动作是

  • 当条件满足时,暂停他们
  • 当条件丢失时,取消挂起

示例 3:自动激活

条件:如果用户的电子邮件与正则表达式匹配,则激活其电子邮件。

要求是“用户的电子邮件与正则表达式匹配”。触发器是保存用户。

动作是

  • 当条件满足时,自动激活用户的电子邮件
  • 当条件不满足时,不要激活

示例 4:默认组

条件:将用户添加到组中

没有指标或要求,因此将在登录时应用于所有用户。

动作是

  • 在登录时将所有用户添加到组中

屏幕截图

Admin Criterion Edit Edit User

指标与要求

很明显,任何指标都可以表示为要求。

  • 要求必须具体。例如,“超过 50 个收到的赞”可能是一个要求。然而,指标可以允许任何范围内的值。
  • 指标可以存储并用于其他目的。例如,一个计划中的功能是将所有指标合并以提供一个“声誉”分数。

设置

要求和操作可能需要在管理员仪表板上设置。例如

  • "添加到组"操作将组 ID 作为设置
  • "挂起"操作将天数以及是否为无限期挂起作为设置
  • "电子邮件与正则表达式匹配"要求将正则表达式作为设置

可扩展性

此扩展非常灵活。它可以被视为自动化管理操作的框架。

扩展可以使用 Askvortsov\AutoModerator\Extend\AutoModerator 扩展器来添加

  • 操作驱动程序
  • 指标驱动程序
  • 要求驱动程序

你应该查看默认驱动程序的源代码以获取示例。它们相当详尽地展示了所提供的内容。

如果你的扩展添加了需要设置的动作或要求驱动程序,你有 2 种选择

  • 在驱动程序的 availableSettings 方法中提供所需的设置翻译密钥。这很简单,但也非常有限。你只能使用字符串,不能添加任何限制或 UI。
  • 你可以为你的驱动程序声明一个设置表单组件。参见 js/src/admin/components/SuspendSelector 以获取示例。该组件应将设置流作为 this.attrs.settings。流的内 容应是一个将设置键映射到值的对象。组件负责在输入时更新流。你可以通过将类添加到 app.autoModeratorForms[DRIVER CATEGORY][TYPE] 来注册表单组件,其中 DRIVER CATEGORY"action""requirement",而 TYPE 是你在 extend.php 中与驱动程序注册的类型字符串。参见 js/src/admin/index.js 以获取底层数据结构和示例。

待办事项

  • 添加对更多指标的支持
    • 已读帖子
    • 在论坛上花费的时间
    • 访问天数
    • 自账户创建以来的天数
    • 等等
  • 添加对日期指标的支持(过去 X 天内创建的讨论)
  • 引入“权重”指标,将它们相加以计算声誉。将此声誉作为指标提供。
  • 开发数据收集扩展,例如缓存点赞数等,以提高大型论坛的性能
  • 调查“监听器”条件:我们能否将删除没有特定组用户的帖子中的链接之类的通用化

贡献

欢迎贡献和 PR!任何添加新驱动程序的 PR 应该附带单元测试(如所有现有驱动程序一样)。

兼容性

从 Flarum 1.0 开始兼容。

安装

composer require nodeloc/flarum-auto-moderator:*

更新

composer update nodeloc/flarum-auto-moderator

链接