社区禁言功能如何设计比较好呢?

2022-06-06 10:07:00 +08:00
 zzztongxue
目前有两种想法:

1.在 users 表里新增禁言字段,每次发帖从数据库 users 表检测是否禁言。

2.新建一张惩罚表,记录对用户的惩罚记录,每次发帖 or 发评论检测一下该表。

第一种方法不能自动取消禁言。第二种方法后台管理员禁言比较麻烦,需要新增一条记录,不能一键禁言。

有点纠结,是否还有其他更好的方案?求解
2478 次点击
所在节点    问与答
31 条回复
estk
2022-06-06 14:08:41 +08:00
@cxe2v
这样好,省得激怒用户
oppoic
2022-06-06 14:36:06 +08:00
论坛一般登录一次,很久不掉线,期间他每次发言,你都查 user 表吗?

用户信息直接放 redis 里最好(此接口调用非常频繁)具体思路:
用户登录,验证成功,写用户信息进 redis (包括禁言状态)。前端拿到这个全局都可以使用,比如发言判断、头像展示、粉丝互动等等等(当然后端也要验证)

过程中禁言、恢复等操作,写库之后再更新 redis (到期自动解除禁言,到期时间也返回给前端,前端来判断)
ranleng
2022-06-06 14:36:32 +08:00
@pengtdyd 某即刻就是这么搞的, 审核中的 po ,自己能看到,其他人看不到。但之前有 bug ,自己转发自己 po (审核中)会显示原 po 找不到。
ikaros
2022-06-06 16:32:22 +08:00
第一种方法为啥不能自动取消禁言? 这个依赖你自己的实现吧
iClass
2022-06-06 16:34:12 +08:00
不会开门 何必关门
jackma0571
2022-06-06 17:42:33 +08:00
我是产品经理说下我的拙见:
1 、user 表增加禁言状态,和禁言期限,发帖回复时校验该状态,禁言状态提示发送失败,被禁言
2 、每天跑定时任务,把到期的用户状态改为非禁言状态,因此你的到期时间最好为每天的 24 点,不然你的定时任务得每分钟跑一次
kaiki
2022-06-06 18:13:27 +08:00
我设计的是用户有状态和解锁时间,正常 /禁用,判断状态再判断时间,如果是禁用那就没必要判断时间了。
i3x
2022-06-06 18:17:21 +08:00
所有的评论统统人工审核后放出呗。
potatowish
2022-06-06 18:27:48 +08:00
社区最好不要设置禁言,可以参照某乎,评论仅个人可见,再考虑下 V2 的降权规则,触发规则就让所发评论沉底。

这样的好处是,用户不会因为直接禁言就破口大骂,而是慢慢接受现状~
keepeye
2022-06-06 18:29:45 +08:00
你要回查禁言记录,就需要单独一张表了。其实都可以,看你系统规模,如果有几千万用户,你加一个字段都要累死,所以单独一张表应该适应性更强一些
xieqiqiang00
2022-06-07 00:26:18 +08:00
你把第一个时间改成解禁时间不就好了,如果是永久禁言改成 2000 年以前的时间比如 1970 年就是 0 时间,然后判断一下就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/857492

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX