装上这个扩展后,不用再自己手动分配用户组和徽章了!
核心理念
核心思想如下:
当用户满足条件 X 时,执行 Y。当用户不再满足条件 X 时,执行 Z 操作。
让我们说一些关键术语:
- 条件组:用户满足的所有条件的集合。
- 标准:一组任意的条件。条件与触发器和操作配对,由以下部分组成:
- 指标:数值条件。例如,帖子计数或收到的点赞数。标准可能需要量度的范围/最小值/最大值。
- 要求:抽象布尔条件。例如,未被暂停,或拥有与特定正则表达式匹配的电子邮件。
- 行动:当满足或丢失标准时自动发生的事情。这可能包括从添加/删除组到发送电子邮件再到暂停用户的任何内容。
- 触发器:一组事件,这些事件将导致用户的 criteria groups 被重新评估。这些与 metrics 和 Requirements 相关联。 会自动触发所有条件。LoggedIn
这使得扩展功能非常强大。此外,由于扩展可以添加自己的指标、要求和操作,因此此扩展可以自动消除大量审核。除了下面列出的示例之外,可能的一些事情是:
- 自动分配成就/徽章
在用户达到阈值时(或仅在用户注册时)向用户发送电子邮件/通知
建立像 Discourse 这样的“信任级别”系统
当用户接收/丢失某些组成员资格时,将用户加入/离开外部系统;
还有更多!可能性是无穷无尽的。
评估
当触发事件发生时:
将针对相关用户计算所有指标(指标的数值是多少?
将针对相关用户计算所有要求(用户是否满足每个要求?
将计算用户的新标准组,并与用户的当前标准组进行比较。这两组将有所不同。只有事件触发的条件才会被调整。
将针对任何 gain 和 lost criteria 执行操作。
您还可以使用 console 命令重新计算所有用户的条件。请注意,这将非常缓慢,通常不应这样做。php flarum criteria:recalculate
例子
示例 1:组管理
标准:收到 50 个或更多点赞并已开始至少 10 个讨论的用户应归入“活跃”组。
在这里,指标是 “收到 50 个或更多赞” 和 “已开始至少 10 个讨论”。不出所料,它们分别带有触发器 (PostWasLiked
,PostWasUnliked
) 和 (Discussion\Started
)。
操作包括:
满足条件后,将用户添加到“活动”组
当条件丢失时,从 “活动” 组中删除该用户
示例 2:悬架
标准:如果用户收到 15 次或更多警告,但不是管理员,请暂停他们。
在这里,指标是 “收到 15 个或更多警告”,要求是 “不是管理员”。触发器将是指标的新警告。该要求没有触发器。
操作包括:
满足条件时,暂停他们
当条件丢失时,取消暂停它们
示例 3:自动激活
标准:如果用户的电子邮件与正则表达式匹配,请激活其电子邮件
要求是“用户的电子邮件与正则表达式匹配”。触发器正在保存用户。
操作包括:
满足条件后,自动激活用户的电子邮件
如果不满足条件,请不要
示例 4:默认组
标准:将用户添加到指定用户组
没有指标或要求,因此这将应用于登录时的所有用户。
操作包括:
登录时将所有用户添加到组
标准编辑
编辑用户
指标与要求
很明显,任何指标都可以表示为 Requirement。
要求必须是具体的。“超过 50 个收到的赞”可能是一个要求。但是,度量可以允许任何范围的值。
指标可以存储并用于其他目的。例如,计划中的功能将合并所有指标以提供 “reputation” 分数。
设置
要求和操作可能需要在管理员控制面板中进行设置。例如:
“添加到组”操作将组 ID 作为设置
“暂停” 操作以天数和暂停是否无限期作为设置
“电子邮件匹配正则表达式”要求将正则表达式作为设置
扩展
此扩展非常灵活。它可以被视为自动审核操作的框架。
扩展可以使用扩展器添加:Askvortsov\AutoModerator\Extend\AutoModerator
动作驱动因素
公制驱动因素
需求驱动因素
您应该查看默认驱动程序的源代码以获取示例。他们对所提供的内容相当详尽。
如果您的扩展添加了使用设置的操作或要求驱动程序,则您有 2 个选项:
为驱动程序方法中所需的设置提供转换键。这很容易,但也非常严格。您只能使用字符串,不能添加任何限制或 UI。availableSettings
您可以为驱动程序声明设置表单组件。有关示例,请参阅 。该组件应将设置流视为 .流的内容应该是将设置键映射到值的对象。该组件负责在 input 时更新流。您可以通过将表单组件的类添加到 、其中 is 或 和 是您在 中注册驱动程序的类型字符串来注册表单组件。有关底层数据结构和示例,请参阅 。js/src/admin/components/SuspendSelectorthis.attrs.settingsapp.autoModeratorForms[DRIVER CATEGORY][TYPE]DRIVER CATEGORY"action""requirement"TYPEextend.phpjs/src/admin/index.js
待办事项:
添加对更多指标的支持:
已读文章
在论坛上花费的时间
访问天数
自账户创建以来的天数
等
添加对过时量度(过去 X 天内创建的讨论)的支持
引入指标 “weights”,求和以计算声誉。将该声誉作为指标提供。
开发一个数据收集扩展,它可以缓存诸如 like counts 之类的内容,以提高大型论坛的性能
调查标准 “listeners”:我们能否概括诸如从没有特定组的用户的帖子中删除链接之类的东西?
贡献
欢迎投稿和 PR!任何添加新驱动程序的 PR 都应该附带单元测试(就像所有现有驱动程序一样)。
兼容性
从 Flarum 1.0 开始兼容。
安装
composer require askvortsov/flarum-auto-moderator:*