Discourse 每日挑战

:information_source: 摘要 运行限时每日签到挑战,包括排行榜、自动帖子和徽章奖励。
:hammer_and_wrench: 仓库链接 GitHub - R23DPrinting/discourse-daily-challenge · GitHub
:open_book: 安装指南 如何在 Discourse 中安装插件

背景故事

我运营着一个健康和保健社区,该社区最近从 Discord 迁移到了 Discourse。在 Discord 上,我曾构建了一个自定义机器人来运行月度健身挑战——成员会发布他们每日的锻炼情况,机器人会跟踪签到、发布每周排行榜,并在每个月末宣布获胜者。这是我们最受欢迎的功能之一。

迁移到 Discourse 后,成员们开始要求恢复这些挑战。我搜索了现有的插件,但一无所获。于是我决定自己开发一个。

最初只是一个快速的解决方案,结果却变成了一个功能齐全的挑战系统,老实说,它比原来的 Discord 机器人效果更好。由于它可能对其他社区也有用,所以在这里分享给大家。

功能

  • 通过主题标签或照片签到——成员通过发布挑战主题标签(例如 #AprilFitness)或上传图片到挑战主题上来签到。两者都会触发有效的签到。
  • 每日一次签到——在应用程序和数据库层面强制执行。每个用户的每日时间窗口基于其个人资料时区。
  • 每个挑战独立时区——独立于服务器时区设置挑战时区,这样就不会有成员在 UTC 午夜时被截止。
  • 实时管理员仪表板——同时显示所有活跃挑战,包括参与者数量、平均签到次数、连胜跟踪、完成百分比和排名靠前的排行榜。
  • 多个同步进行的挑战——可以同时运行多个挑战,每个挑战都有自己的主题、主题标签、时间表和徽章。
  • 已归档的挑战——已完成的挑战保存在一个可折叠的存档中,显示最终统计数据、获胜者和完成率。
  • 自动每周排行榜帖子——在挑战时区中,于可配置的日期和时间发布到挑战主题中。
  • 最终结果帖子——在挑战结束后第二天自动发布,列出所有达到签到目标的成员。
  • 自定义徽章奖励——自动为每个挑战创建一个 Discourse 徽章,并在挑战结束时颁发给符合条件的参与者。
  • 管理员签到管理——直接从管理面板为任何用户添加或删除签到记录。
  • 手动触发排行榜——可以随时从挑战详情页面触发发布排行榜。
  • 包容性的结束日期——如果将结束日期设置为 3 月 31 日,3 月 31 日的签到也会被计算在内。

配置

创建挑战

转到 管理 → 插件 → 每日挑战 → 挑战 → 新建挑战

输入一个主题 ID 以将挑战链接到现有主题。插件将显示主题标题以供确认。填写主题标签触发器、开始和结束日期,以及完成挑战所需的签到次数。

设置挑战时区为您社区的主要时区,以确保日期边界能为您的成员正确评估。

如果您需要自动的每周排行榜帖子,请启用该开关并设置日期和时间。如果您需要一个完成徽章,请启用该开关并输入一个徽章名称(例如“四月健身冠军”)。

点击保存挑战——如果启用了徽章奖励,徽章将自动创建。

运行挑战

创建后,挑战立即生效。成员通过在链接的主题中发布带有主题标签或图片的帖子来签到。管理员仪表板(管理 → 插件 → 每日挑战 → 仪表板)显示所有活跃挑战的实时统计数据。

提示

  • 要求成员在个人资料 → 偏好设置 → 界面 → 时区中设置其时区,以确保每日签到窗口准确。
  • 使用挑战详情页面上的立即发布排行榜按钮,随时触发排行榜帖子。
  • 使用挑战详情页面上的签到部分,为任何用户手动添加或删除签到记录。

设置

名称 描述
daily_challenge_enabled 插件的主开关
Topic ID 参与者发布签到的主题 ID
Hashtag trigger 监控的主题标签,不含 # 符号
Start date 接受签到的第一天
End date 接受签到的最后一天(包含)
Check-ins needed 完成挑战并获得徽章所需的签到次数
Description 关于挑战的可选内部注释(不向参与者显示)
Challenge timezone 用于日期边界和每周发布时间表的时区
Enable weekly leaderboard post 开启/关闭自动每周帖子
Post day of week 发布每周帖子的星期
Post hour (0-23) 在挑战时区中发布每周帖子的小时(0-23)
Award completion badge 开启/关闭自动创建和奖励徽章
Badge name 为此挑战创建的徽章的名称

后续计划

v2 计划内容:

  • 每次签到后发送包含当前统计数据的私信确认
  • 向尚未签到的参与者发送每日提醒私信
  • 用于查询个人统计数据的 @提及 命令

支持和功能请求

如果您遇到任何问题或有新功能方面的想法,请在 GitHub 上提交问题或回复此主题。

4 个赞