integral, clock
积分,打卡签到
看名字,功能不难猜到,在群聊中打卡签到,每次打卡签到后累计打卡签到次数+1,积分+1,每日只可打卡一次,打卡总数/积分总数/打卡日志等等
你可能觉得这些操作需要用到数据库,但是在我的理解中,微信机器人越简单越便捷越好,而微信群聊的数据量不是很大,一个插件的使用,需要额外配置很多东西是很麻烦的,所以,此插件采用了本地存储,用了一个三方轻量化的基于 Node
的 JSON
文件数据库 LOWDB
,避免了数据库这一繁琐的配置
插件会自动在项目根目录创建一个 [机器人名字].clock-logs
的文件夹,用以存放数据
其中 clock-logs-[年份].json
文件存储的是打卡日志,为避免读写操作数据量过大产生的负荷,所以每年会生成对应的 json
文件,这样每个群聊上限是 500 人,以5个群聊为基础,一年的打卡数据量也不会太大
其中 clock-logs-main.json
文件为主文件,存储的是对应群聊/对应用户的打卡签到数据等等
当然,如果你有更好的想法,请务必告知哦
npm install wechaty-room-clock
or
yarn add wechaty-room-clock
const WechatyRoomClock = require("wechaty-room-clock")
bot.use(WechatyRoomClock(options))
如上所示
使用插件只要按需传入配置对象 options
即可
Options 参数属性 | 类型 | 简介 |
---|---|---|
keyword | String|Array | 触发签到的关键字,只有一个可以使用字符串类型,多个关键字使用数组类型,默认为 ["签到", "打卡"] |
success | String|Function | 打卡成功提示该用户的一句话,可为字符串类型,也可以是函数类型,函数类型时,有一个参数data,即当前群成员在本地数据库中的数据对象,函数最终需返回一个字符串function(data){return ...},此项默认值请看下文示例 |
repeat | String|Function | 重复打卡时提示该用户的一句话,可为字符串类型,也可以是函数类型,函数类型时,有一个参数data,即当前群成员在本地数据库中的数据对象,函数最终需返回一个字符串function(data){return ...},此项默认值为 “今日已签到,请勿重复签到” |
参数 success
和 repeat
为函数类型时形参 data
示例
{
// 该用户微信id
"CONTACTID": "wxid_nrsh4yc8yupm22",
// 该用户昵称
"CONTACTNAME": "isboyjc",
// 该用户打卡总数
"CLOCKNUM": 170,
"CLOCKINFO": {
// 该用户2020年打卡总数
"2020": 69,
// 该用户2019年打卡总数
"2019": 101
},
// 该用户积分
"INTEGRALNUM": 170
}
const { Wechaty } = require("wechaty")
const { PuppetPadplus } = require("wechaty-puppet-padplus")
const Qrterminal = require("qrcode-terminal")
const WechatyRoomClock = require("wechaty-room-clock")
const bot = new Wechaty({
puppet: new PuppetPadplus({
// 机器人padplus协议token
token: PUPPET_PADPLUS_TOKEN,
}),
// 机器人名字
name: ROBOT_NAME,
})
let options = {
// 此处为默认项配置,也可为一个字符串
keyword: ["签到", "打卡"],
// 此处为默认项配置,也可为一个字符串
success: (data) => {
let str = "\n签到成功\n"
Object.keys(data.CLOCKINFO).map(
(v) => (str += `${v}年累计签到${data.CLOCKINFO[v]}次\n`)
)
return str + `共累计签到${data.CLOCKNUM}次\n拥有${data.INTEGRALNUM}积分`
},
// 此处为默认项配置,也可为一个字符串
repeat: (data) => `今日已签到,请勿重复签到`,
}
// 使用插件
bot.use(WechatyRoomClock(options))
bot
.on("scan", (qrcode, status) => {
Qrterminal.generate(qrcode, { small: true })
})
.start()
如上所示,如果你对默认配置认同的话,只需要调用 bot.use(WechatyRoomClock())
这一行代码就OK了,是不是方便快捷呢😄
扫描二维码,加圈子微信,可进交流群哦,效果如下图,赶快来试试吧