# koishi-plugin-interactive

[![npm](https://img.shields.io/npm/v/koishi-plugin-interactive)](https://www.npmjs.com/package/koishi-plugin-interactive)

一个多功能互动型QQ机器人插件，基于 [Koishi](https://koishi.chat) 框架开发。提供丰富的游戏和互动功能，让你的机器人更加生动有趣。现已升级为更全面的社交互动系统，包含答题、关系、农场、公司系统和猜歌名游戏等多种功能。

## 功能特点

- 🎮 **猜数字游戏**：经典的猜数字游戏，支持提示功能
- 📅 **每日签到**：连续签到获得额外奖励
- 🎰 **幸运抽奖**：消耗积分获得随机奖励
- 🛒 **积分商店**：使用积分购买各种道具
- 🎒 **物品系统**：管理和使用背包中的物品
- 🏆 **排行榜系统**：查看不同类别的用户排名
- 🎖️ **成就系统**：完成特定目标解锁成就
- 📊 **个人资料**：查看详细的个人数据统计
- 💰 **寻宝功能**：冒险获取双倍积分
- 🏦 **银行系统**：存款并获取每日利息
- 🏠 **房产系统**：购买房产并收取租金
- 🧧 **红包功能**：发送和抢红包
- 🔫 **抢劫功能**：冒险抢劫其他玩家
- ❓ **答题系统**：回答问题获取积分奖励
- 💞 **关系系统**：与其他用户建立好友、情侣关系
- 🌱 **农场系统**：种植作物、收获农产品
- 🏢 **公司系统**：创建公司、招募员工、提升技能
- 🎵 **猜歌名游戏**：根据歌词片段猜测歌曲名称
- � **养牛系统**：领养牛牛，通过互动获得奖励
- 🏢 **公司公户**：公司资金管理，支持税率调整
- 🎟️ **技能券**：使用后获得技能碎片
- 💬 **随机互动**：机器人会随机回复用户消息
- ⏰ **每日提醒**：定时提醒用户签到和参与活动

## 安装方法

```bash
# 使用 npm
npm install koishi-plugin-interactive

# 使用 yarn
yarn add koishi-plugin-interactive

# 使用 pnpm
pnpm add koishi-plugin-interactive
```

## 使用方法

安装并启用插件后，可以使用以下命令：

### 猜数字游戏

- `猜数字 start` - 开始猜数字游戏
- `猜数字 <数字>` - 进行猜测
- `猜数字 hint` - 使用提示令牌获取提示
- `猜数字 giveup` - 放弃当前游戏

### 签到系统

- `签到` - 进行每日签到，获取积分

### 抽奖系统

- `抽奖` - 消耗10积分进行抽奖

### 积分商店

- `商店 list` - 查看商品列表
- `商店 buy <商品ID>` - 购买指定商品

### 排行榜

- `排行榜` - 查看积分排行榜
- `排行榜 points` - 查看积分排行榜
- `排行榜 sign` - 查看连续签到排行榜
- `排行榜 games` - 查看游戏胜场排行榜
- `排行榜 lottery` - 查看抽卡之王排行榜

### 成就系统

- `成就` - 查看已解锁和未解锁的成就

### 个人资料

- `资料` - 查看个人详细数据

### 寻宝功能

- `寻宝` - 冒险寻宝，有机会获得双倍积分
- `寻宝 状态` - 查看当前寻宝状态和冷却时间

### 银行系统

- `银行 存款 <金额>` - 将积分存入银行
- `银行 取款 <金额>` - 从银行取出积分
- `银行 查询` - 查询银行账户信息和利息

### 房产系统

- `房产 列表` - 查看可购买的房产类型
- `房产 购买 <类型>` - 购买指定类型的房产
- `房产 出售 <ID>` - 出售指定ID的房产
- `房产 查询` - 查询已拥有的房产
- `房产 收租` - 收取所有房产的租金

### 红包功能

- `发红包 <金额> <数量>` - 发送指定金额和数量的红包
- `抢红包 <ID>` - 抢指定ID的红包
- `红包 列表` - 查看当前可抢的红包

### 抢劫功能

- `抢劫 @用户` - 尝试抢劫指定用户
- `抢劫 状态` - 查看当前抢劫冷却时间

### 答题系统

- `答题` - 获取一道随机题目
- `答题 <答案>` - 提交答案
- `答题 排行` - 查看答题排行榜

### 关系系统

- `好友 申请 @用户` - 向指定用户发送好友申请
- `好友 接受 @用户` - 接受指定用户的好友申请
- `好友 拒绝 @用户` - 拒绝指定用户的好友申请
- `好友 列表` - 查看自己的好友列表
- `好友 赠送 @用户 <物品ID>` - 赠送物品给好友
- `情侣 求婚 @用户` - 向指定用户求婚
- `情侣 接受 @用户` - 接受指定用户的求婚
- `情侣 拒绝 @用户` - 拒绝指定用户的求婚
- `情侣 状态` - 查看自己的情侣状态
- `情侣 分手` - 与当前情侣分手

### 农场系统

- `农场` - 查看自己的农场状态
- `农场 种植 <作物>` - 种植指定作物
- `农场 收获 <位置>` - 收获指定位置的作物
- `农场 浇水 <位置>` - 给指定位置的作物浇水
- `农场 升级` - 升级农场，增加种植位置
- `农场 商店` - 查看农场商店
- `农场 购买 <物品> <数量>` - 购买农场物品

### 公司系统

- `公司 注册 <公司名>` - 注册一家新公司
- `公司 信息` - 查看你的公司信息
- `公司 升级` - 升级你的公司
- `公司 雇佣 @用户` - 雇佣指定用户
- `公司 解雇 @用户` - 解雇指定用户
- `公司 列表` - 查看所有公司列表
- `公司 公户 存入 <金额>` - 向公司公户存入资金
- `公司 公户 取出 <金额>` - 从公司公户取出资金
- `公司 公户 查询` - 查询公司公户余额
- `公司 税率 设置 <税率>` - 设置公司税率(0-30%)
- `公司 税率 查询` - 查询当前公司税率
- `打工` - 在公司工作赚取积分
- `打工 信息` - 查看你的工作信息
- `打工 辞职` - 辞去当前工作
- `技能 列表` - 查看可学习的技能列表
- `技能 学习 <技能名>` - 学习指定技能
- `技能 信息` - 查看你的技能信息
- `技能券 使用` - 使用技能券获得技能碎片
- `技能券 合成 <技能名>` - 使用技能碎片合成技能

### 养牛系统

- `牛牛 领养` - 领养一头牛牛
- `牛牛 信息` - 查看你的牛牛信息
- `牛牛 喂食` - 给牛牛喂食
- `牛牛 清理` - 清理牛牛的粪便
- `牛牛 挤奶` - 从牛牛身上获取牛奶
- `牛牛 出售 <产品>` - 出售牛牛产品获得积分

### 猜歌名游戏

- `猜歌` - 开始猜歌名游戏
- `猜歌 跳过` - 跳过当前歌曲
- `猜歌 提示` - 获取歌名提示
- `猜歌 排行` - 查看猜歌排行榜

### 帮助命令

- `互动帮助` - 查看所有功能的使用说明

## 配置项

```yaml
# 基础配置
maxGuessNumber: 100  # 猜数字游戏的最大数值
signReward: 10       # 每日签到基础奖励积分
replyProbability: 0.3 # 随机回复概率
coolDown: 5000       # 命令冷却时间(ms)
dailyLimit: 50       # 每日命令使用上限

# 抽奖配置
lotteryPrice: 10     # 抽奖消耗的积分
lotteryItems:        # 抽奖物品列表
  - 'SSR·神秘大奖'
  - 'SR·高级道具'
  - 'R·普通道具'
  - 'N·谢谢参与'
lotteryProbability:  # 各等级物品的概率
  SSR: 0.05
  SR: 0.15
  R: 0.30
  N: 0.50

# 寻宝配置
treasureReward:      # 寻宝奖励范围
  min: 5
  max: 50
treasureCooldown: 3600000  # 寻宝冷却时间(ms)
treasureRiskRate: 0.3      # 寻宝失败概率

# 银行配置
bankInterestRate: 0.05     # 银行日利率
bankMinDeposit: 100        # 最低存款金额
bankMaxDeposit: 10000      # 最高存款金额

# 房产配置
propertyTypes:             # 房产类型配置
  - type: small
    name: 小型公寓
    price: 500
    rent: 50
    description: 每日收取50积分租金
  - type: medium
    name: 中型别墅
    price: 2000
    rent: 200
    description: 每日收取200积分租金
  - type: large
    name: 豪华庄园
    price: 5000
    rent: 500
    description: 每日收取500积分租金

# 红包配置
redPacketExpireTime: 3600000  # 红包过期时间(ms)
redPacketMinAmount: 10        # 红包最小金额
redPacketMaxCount: 10         # 红包最大数量

# 抢劫配置
robberySuccessRate: 0.4       # 抢劫成功率
robberyPunishment: 100        # 抢劫失败惩罚
robberyCooldown: 7200000      # 抢劫冷却时间(ms)

# 答题配置
quizRewardBase: 20            # 答题基础奖励
quizDailyLimit: 10            # 每日答题次数上限
quizCategories:               # 题目分类
  - name: 常识
    weight: 40
  - name: 历史
    weight: 20
  - name: 科学
    weight: 20
  - name: 娱乐
    weight: 20
quizDifficulties:             # 难度及对应奖励倍数
  - name: 简单
    multiplier: 1
    weight: 50
  - name: 中等
    multiplier: 2
    weight: 30
  - name: 困难
    multiplier: 3
    weight: 20

# 关系系统配置
relationshipConfig:
  friendLimit: 10             # 好友上限
  friendGiftCooldown: 86400000 # 好友礼物冷却时间(ms)
  coupleRequirements:         # 情侣关系要求
    minFriendDays: 3          # 成为好友的最少天数
    minPoints: 1000           # 最少积分要求
  coupleBonus:                # 情侣关系奖励
    signMultiplier: 1.5       # 签到奖励倍数
    farmYieldBonus: 0.2       # 农场产量提升

# 农场系统配置
farmConfig:
  initialSlots: 3             # 初始种植位置数量
  maxSlots: 9                 # 最大种植位置数量
  upgradePrice: 500           # 升级农场价格
  waterInterval: 28800000     # 浇水间隔时间(ms)
  crops:                      # 作物配置
    - id: wheat
      name: 小麦
      growthTime: 3600000     # 生长时间(ms)
      price: 10               # 种子价格
      yield: 20               # 收获产量
      waterBonus: 0.5         # 浇水产量提升
    - id: corn
      name: 玉米
      growthTime: 7200000
      price: 20
      yield: 45
      waterBonus: 0.5
    - id: rice
      name: 水稻
      growthTime: 10800000
      price: 30
      yield: 70
      waterBonus: 0.5
    - id: strawberry
      name: 草莓
      growthTime: 14400000
      price: 50
      yield: 120
      waterBonus: 0.5

# 公司系统配置
companyConfig:
  registerCost: 1000          # 注册公司所需积分
  initialEmployeeLimit: 5     # 初始员工上限
  maxEmployeeLimit: 20        # 最大员工上限
  upgradeBaseCost: 2000       # 升级基础成本
  upgradeCostMultiplier: 1.5  # 每次升级成本倍数
  salaryBase: 50              # 员工基础薪资
  companyTypes:               # 公司类型配置
    - id: tech
      name: 科技公司
      profitRate: 0.15
      description: 高风险高回报
    - id: food
      name: 餐饮公司
      profitRate: 0.1
      description: 稳定收益
    - id: retail
      name: 零售公司
      profitRate: 0.12
      description: 中等风险和回报

# 技能系统配置
skillConfig:
  skillPoints: 1              # 每次工作获得的技能点
  skills:                     # 技能配置
    - id: programming
      name: 编程
      maxLevel: 10
      costPerLevel: 5
      salaryBonus: 0.1        # 每级薪资提升
    - id: management
      name: 管理
      maxLevel: 10
      costPerLevel: 5
      employeeBonus: 0.1      # 每级员工效率提升
    - id: marketing
      name: 营销
      maxLevel: 10
      costPerLevel: 5
      profitBonus: 0.05       # 每级公司利润提升

# 养牛系统配置
cattleConfig:
  adoptCost: 500              # 领养牛牛的成本
  feedCost: 50                # 喂食成本
  feedInterval: 43200000      # 喂食间隔时间(ms)
  cleanInterval: 28800000     # 清理间隔时间(ms)
  milkInterval: 86400000      # 挤奶间隔时间(ms)
  milkValue: 100              # 牛奶价值
  fertilizerValue: 50         # 肥料价值
  starvePenalty: 0.1          # 饥饿惩罚系数
  dirtyPenalty: 0.1           # 不清洁惩罚系数
  growthRate: 0.05            # 牛牛每天成长率
  maxLevel: 10                # 牛牛最大等级
  levelBonus: 0.2             # 每级产出提升

# 猜歌名游戏配置
guessSongConfig:
  rewardBase: 30              # 猜对基础奖励
  dailyLimit: 5               # 每日游戏次数上限
  hintCost: 10                # 获取提示消耗积分
  skipCost: 15                # 跳过歌曲消耗积分
  timeLimit: 60000            # 答题时间限制(ms)
  difficulties:               # 难度配置
    - name: 简单
      multiplier: 1
      weight: 50
    - name: 中等
      multiplier: 2
      weight: 30
    - name: 困难
      multiplier: 3
      weight: 20

# 商店商品配置
shopItems:           
  - id: double_card
    name: 双倍积分卡
    description: 下次签到获得双倍积分
    price: 50
    type: consumable
  - id: lottery_ticket
    name: 免费抽奖券
    description: 免费抽奖一次
    price: 40
    type: consumable
  - id: hint_token
    name: 提示令牌
    description: 猜数字时获得提示
    price: 30
    type: consumable
  - id: lucky_charm
    name: 幸运护符
    description: 增加抽中高级奖品的概率
    price: 100
    type: consumable
  - id: robbery_shield
    name: 防盗盾
    description: 防止被抢劫一次
    price: 200
    type: consumable
  - id: treasure_map
    name: 藏宝图
    description: 寻宝时提高成功率和奖励
    price: 150
    type: consumable
  - id: bank_card
    name: 银行卡
    description: 提高银行存款利率
    price: 300
    type: permanent
  - id: property_discount
    name: 房产折扣券
    description: 购买房产时享受10%折扣
    price: 500
    type: consumable
  - id: quiz_skip
    name: 跳过题目
    description: 跳过当前题目获得新题目
    price: 30
    type: consumable
  - id: fertilizer
    name: 高级肥料
    description: 加速作物生长
    price: 100
    type: consumable
  - id: relationship_gift
    name: 精美礼物
    description: 增加好感度的精美礼物
    price: 200
    type: consumable
```

## 更新日志

### v1.0.0
- 初始版本发布
- 实现基础功能：猜数字游戏、签到系统、抽奖系统、积分商店

### v2.0.0
- 更名为 interactive
- 新增寻宝功能
- 新增银行系统
- 新增房产系统
- 新增红包功能
- 新增抢劫功能
- 优化物品系统，增加物品类型
- 优化排行榜系统，增加更多排行类别
- 优化配置项，增加更多自定义选项

### v3.0.0
- 新增答题系统，支持多种题目类型和难度
- 新增关系系统，支持好友和情侣关系
- 新增农场系统，支持种植、收获和农场升级
- 优化商店系统，增加更多物品类型
- 优化用户体验，增加更多互动方式
- 增强系统稳定性和性能

### v4.0.0
- 新增公司系统，支持创建公司、招募员工和公司升级
- 新增打工功能，可在其他玩家的公司工作赚取积分
- 新增技能系统，提升工作效率和公司收益
- 新增猜歌名游戏，根据歌词片段猜测歌曲名称
- 优化用户界面和交互体验
- 修复了多个已知问题

### v5.0.0 
- ✨ 新增养牛系统，用户可以领养、喂养牛牛并获得产品
- 🏢 公司系统增加公户功能，支持资金存取管理
- 💰 新增公司税率设置，可调整0-30%之间
- 🎟️ 新增技能券系统，可获得技能碎片并合成技能
- 🔧 优化公司系统工作机制，提高用户体验
- 🐛 修复多个已知问题，提升系统稳定性

## 贡献指南

欢迎为本项目做出贡献！以下是贡献的步骤：

1. Fork 本仓库
2. 创建你的特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交你的更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 开启一个 Pull Request

## 许可证

MIT