# 修复说明

## 已修复的问题

### 1. 日志文件位置问题 ✅

**问题**: `botpy.log` 文件保存在项目根目录，而不是 `logs/` 文件夹中

**解决方案**:
- 已删除根目录的 `botpy.log` 文件
- 日志配置 (`src/utils/logger.py`) 已正确设置为保存到 `logs/` 文件夹
- `.gitignore` 已包含 `logs/` 和 `*.log` 规则

**结果**: 所有日志文件现在都会保存在 `logs/` 文件夹中

---

### 2. Intent 配置错误 (错误码 4014) ✅

**问题**: 
```
[botpy] 关闭, 返回码: 4014, 返回信息: disallowed intents
```

**原因**: 
- 使用了错误的 intents 初始化方式
- 尝试启用了未授权的权限（如 `direct_message`, `public_messages`）

**解决方案**:
修改 `src/core/bot.py` 中的 intents 配置：

```python
# 旧代码（错误）
intents = botpy.Intents(
    public_guild_messages=True,
    direct_message=True,
)

# 新代码（正确）
intents = botpy.Intents.none()
intents.public_guild_messages = True  # 频道公域消息（@机器人）
```

**说明**:
- `Intents.none()` 创建一个空的 intents 对象
- 只启用 `public_guild_messages`（频道公域消息），这是默认权限
- 其他权限（如群聊、私聊）需要在 QQ 开放平台申请后才能启用

---

### 3. 导入错误修复 ✅

**问题**: 
```
ImportError: cannot import name 'setup_logger' from 'logger'
```

**原因**: 
- `from logger import setup_logger` 导入了第三方包而不是本地模块

**解决方案**:
修改 `src/handlers/message_handler.py`：

```python
# 旧代码
from logger import setup_logger

# 新代码
from src.utils.logger import setup_logger
```

---

## 如何测试

1. 运行启动脚本：
```bash
start.bat
```

2. 检查日志：
```bash
# 查看日志文件夹
dir logs

# 查看最新日志
type logs\bot.log
```

3. 预期输出：
```
✅ 配置验证通过
✅ Intents 配置完成
🚀 正在启动机器人...
[botpy] 登录机器人账号中...
[botpy] 程序启动...
🤖 机器人已启动: [机器人名称] (ID: [机器人ID])
```

---

## 注意事项

### 关于权限申请

如果需要支持以下功能，需要在 QQ 开放平台申请相应权限：

1. **群聊@消息** - 需要申请 `GROUP_AND_C2C_EVENT` 权限
2. **私聊消息** - 需要申请 `GROUP_AND_C2C_EVENT` 权限  
3. **频道私信** - 需要申请 `DIRECT_MESSAGE` 权限

申请地址: https://bot.q.qq.com/

### 当前支持的功能

使用默认权限（`public_guild_messages`），机器人可以：
- ✅ 接收频道中 @机器人 的消息
- ✅ 在频道中回复消息
- ✅ 响应基本命令（/help, /ping, /info）

---

## 文件结构

```
QQbot/
├── logs/              # 日志文件夹（新）
│   └── bot.log       # 应用日志
├── src/
│   ├── core/
│   │   ├── bot.py    # 已修复 intents 配置
│   │   └── config.py
│   ├── handlers/
│   │   └── message_handler.py  # 已修复导入
│   └── utils/
│       └── logger.py  # 日志配置
├── .env              # 配置文件
├── .gitignore        # 已包含 logs/
└── start.bat         # 启动脚本
```

---

## 更新日志

- 2026-03-02: 修复 intents 配置错误（4014）
- 2026-03-02: 修复日志文件位置
- 2026-03-02: 修复 logger 导入错误
