UNPKG

koishi-plugin-auto-tata-group-name

Version:

个人自用,自动更新群聊名称的 Koishi 插件,根据群聊成员数量变化自动更新群名

252 lines (189 loc) 7.22 kB
# koishi-plugin-auto-tata-group-name 一个自动更新群聊名称的 Koishi 插件,可以根据群聊成员数量变化实时更新群名。 ## ✨ 功能特性 - 🔄 **自动监听** - 实时监听群聊成员加入/退出事件 - 👥 **多群支持** - 可以同时监听多个群聊 - 🎨 **自定义模板** - 每个群都有独立的名称模板,使用 `{count}` 占位符 - 📊 **人数反转** - 群名中显示的人数为实际人数的倒序(如374人显示为473) - 🛠️ **手动操作** - 提供便捷的手动更新指令 - 📝 **详细日志** - 完整的操作日志记录 ## 📦 安装 ```bash npm install koishi-plugin-auto-tata-group-name ``` ## ⚙️ 配置选项 | 配置项 | 类型 | 默认值 | 说明 | |--------|------|--------|------| | `guildTemplates` | `GuildConfig[]` | `[]` | 群聊模板配置,配置了就表示监听该群 | | `updateDelay` | `number` | `2000` | 成员变动后等待平台更新的延迟时间(毫秒,范围:500-10000) | ### GuildConfig 配置结构 ```typescript interface GuildConfig { guildId: string // 群聊ID nameTemplate: string // 该群的模板,使用{count}表示人数 } ``` ## 🚀 使用方法 ### 基础配置 在 Koishi 配置文件中添加: ```yaml plugins: auto-tata-group-name: guildTemplates: - guildId: "12345678901234567" nameTemplate: "({count})🦦獭家一爱相亲相" - guildId: "98765432109876543" nameTemplate: "({count})🎮游戏群-人数统计" - guildId: "11111111111111111" nameTemplate: "📚学习群({count}人)" updateDelay: 2000 # 等待2秒后获取成员数量 ``` ### 配置说明 1. **监听规则**:只有在 `guildTemplates` 中配置的群聊才会被监听 2. **模板要求**:每个模板都必须包含 `{count}` 占位符 3. **人数显示**`{count}` 会被替换为实际人数的倒序 ### 延迟时间说明 `updateDelay` 配置项用于解决成员数量获取不准确的问题: - **问题原因**:成员加入/退出事件触发时,平台可能还没有更新成员列表 - **解决方案**:等待一段时间后再获取成员数量,确保数据准确 - **推荐设置** - QQ平台:1000-2000ms - Discord:500-1000ms - 其他平台:根据实际情况调整 ### 效果演示 假设有三个群聊,各有不同人数: **群聊A(374人):** - 配置:`"({count})🦦獭家一爱相亲相"` - 更新后:`(473)🦦獭家一爱相亲相` **群聊B(156人):** - 配置:`"({count})🎮游戏群-人数统计"` - 更新后:`(651)🎮游戏群-人数统计` **群聊C(89人):** - 配置:`"📚学习群({count}人)"` - 更新后:`📚学习群(98人)` > 注意:括号中的数字是实际人数的倒序显示 ## 🎮 可用指令 ### `update-group-name [群聊ID]` 手动更新群聊名称 **参数:** - `群聊ID` (可选) - 要更新的群聊ID,不提供则使用当前群聊 - `-c, --count <数量>` - 手动指定人数,不提供则自动获取 **示例:** ``` update-group-name update-group-name 12345678901234567 update-group-name -c 100 ``` ### `group-name-config` 查看当前插件配置 **示例输出:** ``` 群名自动更新配置: - 监听群聊: 12345678901234567, 98765432109876543, 11111111111111111 - 更新延迟: 2000ms - 群聊模板: * 12345678901234567: ({count})🦦獭家一爱相亲相 * 98765432109876543: ({count})🎮游戏群-人数统计 * 11111111111111111: 📚学习群({count}人) ``` ### `set-group-template <群聊ID> <模板>` 设置群聊模板 **参数:** - `群聊ID` - 要设置模板的群聊ID - `模板` - 新的模板内容,必须包含 `{count}` 占位符 **示例:** ``` set-group-template 12345678901234567 "({count})🦦獭家一爱相亲相" set-group-template 98765432109876543 "({count})🎮游戏群-人数统计" set-group-template 11111111111111111 "📚学习群({count}人)" ``` ### `remove-group-template <群聊ID>` 删除群聊模板,停止监听该群 **示例:** ``` remove-group-template 12345678901234567 ``` ### `test-group-api [群聊ID]` 测试群聊API功能 **示例输出:** ``` 群聊API测试结果: - 群聊ID: 12345678901234567 - 当前群名: (473)🦦獭家一爱相亲相 - 成员数量: 374 - 使用模板: ({count})🦦獭家一爱相亲相 - 监听状态: 已监听 - 平台: onebot - 可用API方法: set_group_name, OneBot.call - 所有内部方法: set_group_name, get_group_info, send_msg... ``` ### `debug-platform` 显示平台详细信息和支持的API方法 **示例输出:** ``` 平台调试信息: - 平台: onebot - 机器人ID: 12345678 - 用户ID: 98765432 - 内部方法数量: 25 - 函数方法: set_group_name, get_group_info, get_group_member_list... - 属性: platform, selfId, userId... ``` ## 🔧 获取群聊ID ### QQ群 1. 在群聊中发送 `test-group-api` 指令 2. 或在QQ群设置中查看群号 ### 微信群 1. 使用微信机器人时,群聊ID通常是一个长字符串 2. 可以通过 `test-group-api` 指令获取 ### Discord 1. 开启开发者模式 2. 右键群聊 → 复制ID ## 🐛 故障排除 ### 群名更新失败 1. 检查机器人是否有管理群聊的权限 2. 确认群聊ID是否正确 3. 查看日志中的具体错误信息 ### 人数获取不准确 如果发现人数显示不正确: 1. **调整延迟时间**```yaml updateDelay: 3000 # 增加到3秒 ``` 2. **检查日志** - 查看是否有 "等待平台更新成员列表" 的日志 - 确认是否成功获取到成员数量 3. **不同平台建议** - QQ平台:建议设置为 2000-3000ms - 网络较慢时:可以设置为 5000ms ### 平台不支持修改群名 如果看到 `当前平台不支持修改群名` 的警告: 1. **使用调试指令检查平台支持**``` debug-platform test-group-api ``` 2. **常见平台支持情况** -**QQ (OneBot)**:支持 `set_group_name` 等API -**QQ官方Bot**:支持 `modify_group_info` 等API -**微信**:大多数情况下不支持修改群名 -**Discord**:支持 `editGuild` API -**Telegram**:Bot无法修改群名 3. **解决方案** - 检查机器人是否有足够的权限 - 确认使用的适配器是否支持群名修改 - 联系适配器开发者了解API支持情况 ### 无法获取成员列表 1. 某些平台可能限制获取成员列表 2. 可以使用手动指定人数的方式:`update-group-name -c 人数` ## 📋 注意事项 1. **人数显示规则**:群名中显示的人数是实际人数的倒序 - 实际 123 人 → 显示 321 - 实际 456 人 → 显示 654 2. **监听规则**:只有在 `guildTemplates` 中配置的群聊才会被监听和自动更新 3. **人数准确性**:插件会在成员变动后等待一段时间再获取成员数量,确保数据准确 4. **平台兼容性**:不同聊天平台的API可能有差异,如遇问题请查看日志 5. **权限要求**:机器人需要有修改群名的权限 6. **更新频率**:每次成员变动都会触发检查,但只有人数真正变化时才会更新群名 ## 📄 许可证 MIT License