进阶 docs.flarum.org 2026-10-15 14:50:53 · 22 阅读
第39章 Flarum Messages 扩展:实现会员私密对话与消息管理
版本:2.x 消息
Messages 扩展(flarum/messages)允许会员在论坛的公开讨论之外,进行一对一的私密对话。这是一个内置扩展,但在新安装中默认未启用。
安装
该扩展随 Flarum 一起提供。可在后台的“扩展”页面中启用。
如果你的安装中没有该扩展,请像其他包一样安装,然后启用:
composer require flarum/messages
php flarum cache:clear
会话 会话发生在两个成员之间。成员可以通过以下方式发起会话: 在对方的个人主页上发送消息; 在 Messages 页面发送消息,系统会询问消息的接收人。 给已有会话的成员发消息时,会继续该会话,而不是另起一个新会话。 只有会话的双方才能看到会话内容。管理员和版主也不例外:他们无法查看自己未参与的会话。 无法回复的成员 成员只能给能回复的人发消息:即所在组拥有 Send private messages 权限的人。被停用的成员或未确认邮箱的成员只有访客权限,因此无法回复。 当成员选择消息接收人时,无法回复的人会显示为 Can't reply to messages,且无法被选中。在该成员的个人主页上,Send a message 按钮不可用,并提示 This user cannot reply。在与对方的现有会话中,回复框会消失,会话中会显示 This user cannot reply。 管理员以及被授予 Message users without messaging permission 权限的组,仍然可以给他们发消息。一旦其中一人在会话中发出消息,会话中的所有人都可以在那里回复,因此被停用的成员也能回复版主。但该成员仍然无法自己发起会话。 从旧版本升级时,管理员已经回复过的会话也会以同样的方式开放回复。 Messages 页面 成员可以点击页眉的 Messages 图标进入 Messages 页面(图标上会显示有未读内容的会话数量),也可以通过论坛导航中的 Messages 进入。页面列出成员的所有会话,在较宽的屏幕上,当前打开的会话会显示在列表旁边。 在该页面上,成员可以: 按 Latest activity、Newest 或 Oldest 排序会话; 将某个会话标记为已读,或用 Mark all as read 全部标记为已读; 通过 Details 查看会话的参与者及开始时间。 通知 当有人给成员发消息时,成员会收到一封邮件。每个会话只发一封邮件,直到该成员读过消息后才会再次发送。 成员可以在自己 Settings 页面的通知设置中,通过 Someone sends me a message 选项关闭这些邮件。 无论成员是否接收邮件通知,页眉的 Messages 图标都会显示新消息。 删除消息 如果你允许,成员可以删除自己发送的消息。在管理面板 Permissions 页面的 Delete own messages 下设置可删除的时限: 选项 | 成员可以删除自己发送的消息 Indefinitely | 任何时候 For 10 minutes | 发送后 10 分钟内 Until next reply | 直到会话中有人再发一条消息 Never | 永远不能 在你做出选择之前,成员无法删除自己的消息。 删除消息后,双方都会看不到该消息,且无法撤销。删除会话中最后一条剩余的消息会同时删除整个会话。 搜索 成员可以在论坛搜索中查找自己会话里的文本,匹配结果会显示在 Messages 下。访客永远看不到这个部分。 防刷屏 为防止新账号向成员的收件箱刷屏,每个成员: 每 10 秒只能发送一条消息; 每小时最多发起 10 个新会话。 为需要跳过这些限制的组(如版主)授予 Send messages without throttling 权限。 权限 在管理面板的 Permissions 页面设置以下权限: 权限 | 默认授予 | 作用 Send private messages | Members | 发起会话和发送消息。 Message users without messaging permission | 仅 Admins | 给无法自己发消息的成员发消息,对方随后可以在该会话中回复。参见"无法回复的成员"。 Delete own messages | 无 | 在你设定的时限内删除自己发送的消息。参见"删除消息"。 Send messages without throttling | 仅 Admins | 发送消息时不受防刷屏限制。 View IP addresses of messages | 仅 Admins | 查看每条消息发送时的 IP 地址。Messages 会记录每条消息的 IP。 与其他扩展的配合 扩展 | 为 Messages 增加的功能 Realtime | 新消息会实时出现在已打开的会话中,页眉的计数立即更新,成员还能看到对方正在输入。 Mentions | 成员可以在消息中提及其他成员和帖子。 Statistics | PM started 和 PM replies 统计会话数及会话中的回复数。 Audit | 审计日志记录成员发起会话及发送每条消息的时间,以及消息的接收人,但不记录消息内容。 GDPR | 成员的数据导出包含其消息。擦除成员会删除其消息;匿名化会移除其消息中记录的 IP 地址。任何人(包括管理员)都无法给已匿名化的成员发消息(无论新会话还是现有会话),选择消息接收人时也不会列出他们。
php flarum cache:clear
会话 会话发生在两个成员之间。成员可以通过以下方式发起会话: 在对方的个人主页上发送消息; 在 Messages 页面发送消息,系统会询问消息的接收人。 给已有会话的成员发消息时,会继续该会话,而不是另起一个新会话。 只有会话的双方才能看到会话内容。管理员和版主也不例外:他们无法查看自己未参与的会话。 无法回复的成员 成员只能给能回复的人发消息:即所在组拥有 Send private messages 权限的人。被停用的成员或未确认邮箱的成员只有访客权限,因此无法回复。 当成员选择消息接收人时,无法回复的人会显示为 Can't reply to messages,且无法被选中。在该成员的个人主页上,Send a message 按钮不可用,并提示 This user cannot reply。在与对方的现有会话中,回复框会消失,会话中会显示 This user cannot reply。 管理员以及被授予 Message users without messaging permission 权限的组,仍然可以给他们发消息。一旦其中一人在会话中发出消息,会话中的所有人都可以在那里回复,因此被停用的成员也能回复版主。但该成员仍然无法自己发起会话。 从旧版本升级时,管理员已经回复过的会话也会以同样的方式开放回复。 Messages 页面 成员可以点击页眉的 Messages 图标进入 Messages 页面(图标上会显示有未读内容的会话数量),也可以通过论坛导航中的 Messages 进入。页面列出成员的所有会话,在较宽的屏幕上,当前打开的会话会显示在列表旁边。 在该页面上,成员可以: 按 Latest activity、Newest 或 Oldest 排序会话; 将某个会话标记为已读,或用 Mark all as read 全部标记为已读; 通过 Details 查看会话的参与者及开始时间。 通知 当有人给成员发消息时,成员会收到一封邮件。每个会话只发一封邮件,直到该成员读过消息后才会再次发送。 成员可以在自己 Settings 页面的通知设置中,通过 Someone sends me a message 选项关闭这些邮件。 无论成员是否接收邮件通知,页眉的 Messages 图标都会显示新消息。 删除消息 如果你允许,成员可以删除自己发送的消息。在管理面板 Permissions 页面的 Delete own messages 下设置可删除的时限: 选项 | 成员可以删除自己发送的消息 Indefinitely | 任何时候 For 10 minutes | 发送后 10 分钟内 Until next reply | 直到会话中有人再发一条消息 Never | 永远不能 在你做出选择之前,成员无法删除自己的消息。 删除消息后,双方都会看不到该消息,且无法撤销。删除会话中最后一条剩余的消息会同时删除整个会话。 搜索 成员可以在论坛搜索中查找自己会话里的文本,匹配结果会显示在 Messages 下。访客永远看不到这个部分。 防刷屏 为防止新账号向成员的收件箱刷屏,每个成员: 每 10 秒只能发送一条消息; 每小时最多发起 10 个新会话。 为需要跳过这些限制的组(如版主)授予 Send messages without throttling 权限。 权限 在管理面板的 Permissions 页面设置以下权限: 权限 | 默认授予 | 作用 Send private messages | Members | 发起会话和发送消息。 Message users without messaging permission | 仅 Admins | 给无法自己发消息的成员发消息,对方随后可以在该会话中回复。参见"无法回复的成员"。 Delete own messages | 无 | 在你设定的时限内删除自己发送的消息。参见"删除消息"。 Send messages without throttling | 仅 Admins | 发送消息时不受防刷屏限制。 View IP addresses of messages | 仅 Admins | 查看每条消息发送时的 IP 地址。Messages 会记录每条消息的 IP。 与其他扩展的配合 扩展 | 为 Messages 增加的功能 Realtime | 新消息会实时出现在已打开的会话中,页眉的计数立即更新,成员还能看到对方正在输入。 Mentions | 成员可以在消息中提及其他成员和帖子。 Statistics | PM started 和 PM replies 统计会话数及会话中的回复数。 Audit | 审计日志记录成员发起会话及发送每条消息的时间,以及消息的接收人,但不记录消息内容。 GDPR | 成员的数据导出包含其消息。擦除成员会删除其消息;匿名化会移除其消息中记录的 IP 地址。任何人(包括管理员)都无法给已匿名化的成员发消息(无论新会话还是现有会话),选择消息接收人时也不会列出他们。