项目作者: isboyjc

项目描述 :
integral, clock
高级语言: JavaScript
项目地址: git://github.com/isboyjc/wechaty-room-clock.git
创建时间: 2020-07-05T12:21:12Z
项目社区:https://github.com/isboyjc/wechaty-room-clock

开源协议:MIT License

下载


wechaty-room-clock

Wechaty Plugin Contrib Powered by Wechaty

integral, clock

积分,打卡签到

开始

简介

看名字,功能不难猜到,在群聊中打卡签到,每次打卡签到后累计打卡签到次数+1,积分+1,每日只可打卡一次,打卡总数/积分总数/打卡日志等等

你可能觉得这些操作需要用到数据库,但是在我的理解中,微信机器人越简单越便捷越好,而微信群聊的数据量不是很大,一个插件的使用,需要额外配置很多东西是很麻烦的,所以,此插件采用了本地存储,用了一个三方轻量化的基于 NodeJSON 文件数据库 LOWDB,避免了数据库这一繁琐的配置

插件会自动在项目根目录创建一个 [机器人名字].clock-logs 的文件夹,用以存放数据

其中 clock-logs-[年份].json 文件存储的是打卡日志,为避免读写操作数据量过大产生的负荷,所以每年会生成对应的 json 文件,这样每个群聊上限是 500 人,以5个群聊为基础,一年的打卡数据量也不会太大

其中 clock-logs-main.json 文件为主文件,存储的是对应群聊/对应用户的打卡签到数据等等

当然,如果你有更好的想法,请务必告知哦

安装

  1. npm install wechaty-room-clock
  2. or
  3. yarn add wechaty-room-clock

使用

  1. const WechatyRoomClock = require("wechaty-room-clock")
  2. bot.use(WechatyRoomClock(options))

如上所示

使用插件只要按需传入配置对象 options 即可

Options 参数属性 类型 简介
keyword String\ Array 触发签到的关键字,只有一个可以使用字符串类型,多个关键字使用数组类型,默认为 [“签到”, “打卡”]
success String\ Function 打卡成功提示该用户的一句话,可为字符串类型,也可以是函数类型,函数类型时,有一个参数data,即当前群成员在本地数据库中的数据对象,函数最终需返回一个字符串function(data){return …},此项默认值请看下文示例
repeat String\ Function 重复打卡时提示该用户的一句话,可为字符串类型,也可以是函数类型,函数类型时,有一个参数data,即当前群成员在本地数据库中的数据对象,函数最终需返回一个字符串function(data){return …},此项默认值为 “今日已签到,请勿重复签到”

参数 successrepeat 为函数类型时形参 data 示例

  1. {
  2. // 该用户微信id
  3. "CONTACTID": "wxid_nrsh4yc8yupm22",
  4. // 该用户昵称
  5. "CONTACTNAME": "isboyjc",
  6. // 该用户打卡总数
  7. "CLOCKNUM": 170,
  8. "CLOCKINFO": {
  9. // 该用户2020年打卡总数
  10. "2020": 69,
  11. // 该用户2019年打卡总数
  12. "2019": 101
  13. },
  14. // 该用户积分
  15. "INTEGRALNUM": 170
  16. }

示例

  1. const { Wechaty } = require("wechaty")
  2. const { PuppetPadplus } = require("wechaty-puppet-padplus")
  3. const Qrterminal = require("qrcode-terminal")
  4. const WechatyRoomClock = require("wechaty-room-clock")
  5. const bot = new Wechaty({
  6. puppet: new PuppetPadplus({
  7. // 机器人padplus协议token
  8. token: PUPPET_PADPLUS_TOKEN,
  9. }),
  10. // 机器人名字
  11. name: ROBOT_NAME,
  12. })
  13. let options = {
  14. // 此处为默认项配置,也可为一个字符串
  15. keyword: ["签到", "打卡"],
  16. // 此处为默认项配置,也可为一个字符串
  17. success: (data) => {
  18. let str = "\n签到成功\n"
  19. Object.keys(data.CLOCKINFO).map(
  20. (v) => (str += `${v}年累计签到${data.CLOCKINFO[v]}次\n`)
  21. )
  22. return str + `共累计签到${data.CLOCKNUM}次\n拥有${data.INTEGRALNUM}积分`
  23. },
  24. // 此处为默认项配置,也可为一个字符串
  25. repeat: (data) => `今日已签到,请勿重复签到`,
  26. }
  27. // 使用插件
  28. bot.use(WechatyRoomClock(options))
  29. bot
  30. .on("scan", (qrcode, status) => {
  31. Qrterminal.generate(qrcode, { small: true })
  32. })
  33. .start()

如上所示,如果你对默认配置认同的话,只需要调用 bot.use(WechatyRoomClock()) 这一行代码就OK了,是不是方便快捷呢😄

最后

扫描二维码,加圈子微信,可进交流群哦,效果如下图,赶快来试试吧

图片名称

image-20200705213657340