message-counter:用于统计群聊中用户的发言次数,并生成各种排行榜,包括日榜、周榜、月榜、年榜、总榜和圣龙王榜。🐉

koishi-plugin-message-counter

npm

:balloon: 介绍

koishi-plugin-message-counter 是一个基于 Koishi 的机器人插件,用于统计群聊中用户的发言次数,并生成各种排行榜,包括日榜、周榜、月榜、年榜、总榜和圣龙王榜。:dragon:

该插件可以自动推送排行榜,也可以手动查询。还可以选择是否统计机器人自己的发言,以及是否禁言每天发言最多的用户(即龙王)。:zipper_mouth_face:

该插件使用了 node-schedule 来实现定时任务,以及 Koishi 的数据库接口来存储用户数据。:books:

:package: 安装

前往 Koishi 插件市场添加该插件即可 🚀

:video_game: 使用

  • 该插件仅记录群聊消息,私聊消息不会被统计。:see_no_evil:
  • 该插件建议为指令添加指令别名,以方便用户快速查询。:rocket:
  • 水平柱状图样式 3,可以为用户添加自定义图标,可在 data/messageCounterIcons 文件夹下添加用户图标,文件名为 userId,例如:1234567890.png:art:
    • 同一个用户可以添加多个图标,会同时显示。多个图片请使用文件名形如:1234567890-1.png, 1234567890-2.png(防止文件名相同)。:art:
  • 水平柱状图样式 3,可以为用户添加自定义水平柱状条,可在 data/messageCounterBarBgImgs 文件夹下添加水平柱状条,图片大小请最好设置宽高为 850*50,文件名为 userId,例如:1234567890.png:art:
    • 同一个用户可以添加多个水平柱状条,会随机选择一个。多个图片请使用文件名形如:1234567890-1.png, 1234567890-2.png(防止文件名相同)。:art:

添加完图片后,记得重启插件哦 ~

:gear: 配置项

排行榜显示设置

  • defaultMaxDisplayCount:排行榜默认显示的人数,默认为 20:busts_in_silhouette:
  • isTimeInfoSupplementEnabled:是否在显示排行榜时补充时间信息,默认值为 true
  • isUserMessagePercentageVisible:是否在排行榜中显示用户消息占比,默认值为 false

消息追踪设置

  • isBotMessageTrackingEnabled:是否统计机器人自己发送的消息,默认为 false:robot:

图片转换功能设置

  • isTextToImageConversionEnabled:是否开启将文本转为图片的功能(可选),如需启用,需要启用 markdownToImage 服务。:robot:
  • isLeaderboardToHorizontalBarChartConversionEnabled:是否开启排行榜转为水平柱状图的功能(可选),如需启用,需要启用 markdownToImage 服务。:robot:
  • imageType:图片类型,可选值为 pngjpegwebp,默认为 png:robot:
  • width:图片宽度,默认为 600:robot:
  • isFirstProgressFullyVisible:横向柱状图第一名的进度条是否占满(对样式 3 无效)。:robot:
  • maxHorizontalBarLabelLengthBeforeTruncation:横向柱状图标签最大长度,超过则截断,默认为 10:robot:
  • waitUntil:(仅样式 3)等待页面加载的事件。:robot:
  • shouldMoveIconToBarEndLeft:(仅样式 3)是否将自定义图标移动到水平柱状条末端的左侧(默认则是放在用户名的右侧)。:robot:
  • horizontalBarBackgroundOpacity:(仅样式 3)水平柱状图背景图片不透明度,默认为 0.6:robot:
  • horizontalBarBackgroundFullOpacity:(仅样式 3)水平柱状图背景图片整条的不透明度,默认为 0:robot:
  • horizontalBarChartStyle:水平柱状图样式,可选值为 123,默认为 3:robot:

自动推送设置

  • autoPush:是否自动推送排行榜,默认为 false:ok_hand:
    • shouldSendDailyLeaderboardAtMidnight:是否在每日 0 点自动发送排行榜,默认为 true:sun_with_face:
    • dailyScheduledTimers:每日定时发送用户今日发言排行榜的时间列表(中国北京时间),例如 08:0018:45。如果开启上面的选项,则自动包含 0 点。:sun_with_face:
    • leaderboardGenerationWaitTime:自动生成排行榜的等待时间,单位是秒,默认为 3:watch:
    • pushChannelIds:启用自动推送排行榜功能的频道列表。:watch:
    • shouldSendLeaderboardNotificationsToAllChannels:是否向所有频道推送排行榜,默认为 false:globe_with_meridians:
    • excludedLeaderboardChannels:不推送排行榜的频道列表,默认为 false:globe_with_meridians:

用户禁言设置

  • enableMostActiveUserMuting:是否禁言每天发言最多的用户,即龙王,默认为 false:speak_no_evil:
    • dragonKingDetainmentTime:关押龙王的等待时间,单位是秒,默认为 5:speak_no_evil:
    • detentionDuration:关押时长,单位是天,默认为 1:speak_no_evil:
    • muteChannelIds:启用关押龙王功能的频道列表。:watch:

:memo: 命令

messageCounter

  • messageCounter:查看 messageCounter 帮助。:question:

  • messageCounter.初始化:初始化,清空数据表,将插件还原,需要权限等级 3 级及以上。:pray:

  • messageCounter.查询 [targetUser]:查询指定用户的发言次数信息(次数[排名])。:mag:

    • -d:今日发言次数[排名]。:sun_with_face:
    • -w:本周发言次数[排名]。:crescent_moon:
    • -m:本月发言次数[排名]。:date:
    • -y:今年发言次数[排名]。:confetti_ball:
    • -t:总发言次数[排名]。:crown:
    • --yesterday:昨日发言次数[排名]。:arrow_left:
    • --dag:跨群今日发言总次数[排名]。:crown:
    • -a:跨群发言总次数[排名]。:dragon_face:
  • messageCounter.排行榜 [number]:发言排行榜,可以指定显示的人数,也可以使用以下选项来指定排行榜的类型::trophy:

    • -d:今日发言榜。:sun_with_face:
    • -w:本周发言榜。:crescent_moon:
    • -m:本月发言榜。:date:
    • -y:今年发言榜。:confetti_ball:
    • -t:总发言榜。:crown:
    • --yesterday:昨日发言榜。:arrow_left:
    • --dag:跨群今日发言榜。:crown:
    • --dragon:圣龙王榜,显示每个用户在所有群中的总发言次数。:dragon_face:
    • 若未指定排行榜类型,则默认为今日发言榜。:speech_balloon:
  • messageCounter.群排行榜 [number:number]:各个群聊的发言排行榜,可以指定显示的数量,也可以使用以下选项来指定排行榜的类型::trophy:

    • -d:今日发言榜。:sun_with_face:
    • -w:本周发言榜。:crescent_moon:
    • -m:本月发言榜。:date:
    • -y:今年发言榜。:confetti_ball:
    • -t:总发言榜。:crown:
    • --yesterday:昨日发言榜。:arrow_left:
    • 若未指定排行榜类型,则默认为今日发言榜。:speech_balloon:

:cherry_blossom: 测试图

特此感谢 nullbczd 大人!喵 ~!!!

:pray: 致谢

  • Koishi - 机器人框架 :robot:
  • Akisa - Akisa 大人我爱你!:sparkling_heart:
  • node-schedule - 定时任务库 :clock3:
  • nullbczd - 感谢 nullbczd 大人对水平柱状图样式的贡献!:+1:
  • shangxue - 感谢上学大人对推送所有频道配置项的建议!:+1:

:page_facing_up: License

MIT License © 2024

6 个赞

:partying_face: :partying_face: :partying_face:

3 个赞

来人,请龙王吃口球

3 个赞

:partying_face: :partying_face:
这插件用的太舒服了

1 个赞

更新到4.17.6后出现大量

2 个赞

不好意思!现在才回复,已经修好捏!

2 个赞

能请教下是怎么修的吗。感觉之后会用到

2 个赞

把using改成inject就好了
using变成ts关键词,所以改成inject了

3 个赞