Skip to main content

基于QQ音乐歌单,支持多群配置、持久化管理及定时自定义话术的音乐推荐插件

Project description

NoneBotPluginLogo

nonebot-plugin-qqmusic-reco

🎵 基于QQ音乐歌单的音乐推荐 ✨
基于QQ音乐歌单,支持多群配置、持久化管理及定时自定义话术的音乐推荐插件 pypi python nonebot2 license

📖 简介

这是一个适用于 NoneBot2 的音乐推荐插件。它允许你配置多个 QQ 音乐歌单(支持权重分配),并根据设定的时间(Cron 表达式或间隔)向不同的群组推送随机音乐。

✨ 核心特性

  • 多群独立配置:每个群可以订阅不同的歌单配置、设置不同的推送时间。
  • 灵活的定时任务:支持 cron(指定时间点,如 8点、12点半)和 interval(间隔分钟)两种模式。
  • 自定义话术系统:支持按时间段(如早安/晚安)配置不同的开场白。
  • 不太健壮的配置管理:: (
  • 权重随机算法:支持在一个配置中混合多个歌单,并按权重抽取歌曲。

💿 安装

使用 nb-cli 安装(推荐)
nb plugin install nonebot-plugin-qqmusic-reco
使用 pip 安装
pip install nonebot-plugin-qqmusic-reco

⚙️ 配置 (没啥用)

.env 文件中配置全局参数。大多数功能可通过指令动态配置,以下为默认值:

配置项 类型 默认值 说明
qqmusic_priority int 5 插件响应优先级
qqmusic_block bool True 是否阻断后续指令
qqmusic_output_n int 3 默认每次推荐歌曲数量
qqmusic_max_pool int 200 获取歌单时的最大歌曲池大小
qqmusic_cute_message bool True 是否开启推送时的自定义话术
LOG_LEVEL str INFO 调试时可设为 DEBUG 查看详细任务添加日志

💻 指令使用

基础指令

  • reco list

  • 查看当前所有可用的推荐配置(歌单集合)。

  • reco now [数量]

  • 立即在当前群发送推荐(默认 3 首)。

  • 示例:reco now 5

  • reco help

  • 查看帮助菜单。

管理员指令 (SUPERUSER)

1. 创建推荐配置 (Create)

将一个或多个歌单打包为一个“推荐配置”。

reco create <名称> <歌单链接  权重|ID>
  • 简单模式reco create 我的热歌 https://y.qq.com/n/ryqq/playlist/xxxx
  • 混合模式(支持权重)reco create 混合歌单 2.0|7671500210,1.0|862300123 (表示 2.0 权重的歌单 ID 和 1.0 权重的歌单 ID 混合)

2. 删除推荐配置 (Del)

reco del <名称>

3. 订阅推送 (Sub)

注意:为了防止误操作,如果该群已订阅,需先使用 reco td 取消订阅。

reco sub <配置名> <定时规则> [每次数量]

定时规则格式说明

  • Cron 模式 (推荐):使用 cron: 前缀(可省略),后跟时间点。支持英文或中文逗号。

  • 8 -> 每天 08:00

  • 8,12,18 -> 每天 08:00, 12:00, 18:00

  • 8:30,20,0 -> 每天 08:30, 20:00, 00:00

  • 间隔模式:使用 interval: 前缀,后跟分钟数。

  • interval:60 -> 每 60 分钟推送一次

示例

# 每天 8点、12点、18点 推送 "抖音热歌" 配置,每次 3 首
reco sub 抖音热歌 8,12,18 3

# 每天 13:45 和 22:00 推送
reco sub Default 13:45,22:00 5

4. 取消订阅 (Unsub)

reco td
# 或
reco unsub

5. 重载配置 (Reload)

强制从磁盘重新加载配置文件并刷新定时任务(通常用于手动修改 JSON 文件后)。

reco reload

📂 数据与自定义

插件数据存储在 nonebot-plugin-localstore 定义的数据目录中。

1. 目录结构

data/
└── nonebot_plugin_qqmusic_reco/
    ├── reco_config.json    # 推荐歌单配置
    ├── group_config.json   # 群订阅配置
    └── cute_messages.json  # 自定义话术配置

2. 自定义话术 (cute_messages.json)

你可以编辑 cute_messages.json 来定制不同时间段的提示语。

  • 支持跨天时间段(如 22:0006:00)。
  • Bot 启动时会自动加载,或使用 reco reload 刷新。

格式示例

[
  {
    "start_time": "06:00", 
    "end_time": "10:59", 
    "messages": [
      "早安喵~ 又是元气满满的一天!", 
      "太阳晒屁股啦,听首歌醒醒脑吧~"
    ]
  },
  {
    "start_time": "22:00", 
    "end_time": "05:59", 
    "messages": [
      "夜深了,来点助眠音乐吗?", 
      "还不睡?那就陪我听首歌吧~"
    ]
  }
]

❓ 常见问题 (FAQ)

Q: 定时任务设置了 13:45,但实际上等到晚上才推送? A: 请检查你的服务器/容器时区。

  • 插件启动时会在日志打印 [QQMusicReco] ... 当前系统时间: xxxx
  • 如果时间与北京时间不符,请调整 Docker 容器时区(挂载 /etc/localtime)。

Q: 输入 reco sub 提示“本群已订阅”? A: 这是为了防止误覆盖原有配置。请先发送 reco td 取消当前订阅,再重新设置。

Q: 为什么我看不到详细的任务添加日志? A: 从 v0.1.16 开始,详细的任务添加日志已降级为 DEBUG 等级。如果需要排查,请在 .env 中设置 LOG_LEVEL=DEBUG

📝 依赖库

🤝 贡献

欢迎提交 Issue 或 Pull Request!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_qqmusic_reco-0.1.15.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nonebot_plugin_qqmusic_reco-0.1.15-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file nonebot_plugin_qqmusic_reco-0.1.15.tar.gz.

File metadata

File hashes

Hashes for nonebot_plugin_qqmusic_reco-0.1.15.tar.gz
Algorithm Hash digest
SHA256 9668f1e63f4d34b7b73897ea933461844d2097ba0c5f1beb5e8913fb7fd70877
MD5 159dc067f0c6b24039387f8ffb4ceef7
BLAKE2b-256 f6979f0a349bdedd6e2a8f7d7d267328737951d09199e42b84c682be0cc21513

See more details on using hashes here.

File details

Details for the file nonebot_plugin_qqmusic_reco-0.1.15-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_qqmusic_reco-0.1.15-py3-none-any.whl
Algorithm Hash digest
SHA256 2232fc1a57e6af0059965be3c47f7fe484afd67d2bb53ecee4c7db4eedc9bab7
MD5 eb2bbddafb51ded785932912d1e9c0d2
BLAKE2b-256 ef26b1af3c7f78a1b8ab5ff7be1b42929787888f9625a2de7d64d09e8cf30c37

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page