10 KiB
快速更新Q&A❓
- 这个文件用来记录一些常见的新手问题。
完整安装教程
Api相关问题
- 为什么显示:"缺失必要的API KEY" ❓
你需要在 Silicon Flow Api 网站上注册一个账号,然后点击这个链接打开API KEY获取页面。
点击 "新建API密钥" 按钮新建一个给MaiMBot使用的API KEY。不要忘了点击复制。
之后打开MaiMBot在你电脑上的文件根目录,使用记事本或者其他文本编辑器打开 .env 这个文件。把你刚才复制的API KEY填入到
SILICONFLOW_KEY=这个等号的右边。在默认情况下,MaiMBot使用的默认Api都是硅基流动的。
- 我想使用硅基流动之外的Api网站,我应该怎么做 ❓
你需要使用记事本或者其他文本编辑器打开config目录下的 bot_config.toml
然后修改其中的
provider =字段。同时不要忘记模仿 .env 文件的写法添加 Api Key 和 Base URL。举个例子,如果你写了
provider = "ABC",那你需要相应的在 .env 文件里添加形如ABC_BASE_URL = https://api.abc.com/v1和ABC_KEY = sk-1145141919810的字段。如果你对AI模型没有较深的了解,修改识图模型和嵌入模型的provider字段可能会产生bug,因为你从Api网站调用了一个并不存在的模型
这个时候,你需要把字段的值改回
provider = "SILICONFLOW"以此解决此问题。
MongoDB相关问题
- 我应该怎么清空bot内存储的表情包 ❓
需要先安装
MongoDB Compass,下载链接,软件支持macOS、Windows、Ubuntu、Redhat系统 以Windows为例,保持如图所示选项,点击Download即可,如果是其他系统,请在Platform中自行选择:
打开你的MongoDB Compass软件,你会在左上角看到这样的一个界面:
![]()
点击 "CONNECT" 之后,点击展开 MegBot 标签栏
![]()
点进 "emoji" 再点击 "DELETE" 删掉所有条目,如图所示
![]()
你可以用类似的方式手动清空MaiMBot的所有服务器数据。
MaiMBot的所有图片均储存在 data 文件夹内,按类型分为 emoji 和 image
在删除服务器数据时不要忘记清空这些图片。
- 为什么我连接不上MongoDB服务器 ❓
这个问题比较复杂,但是你可以按照下面的步骤检查,看看具体是什么问题
Windows
- 检查有没有把 mongod.exe 所在的目录添加到 path。 具体可参照
需要往path里填入的是 exe 所在的完整目录!不带 exe 本体
- 环境变量添加完之后,可以按下
WIN+R,在弹出的小框中输入powershell,回车,进入到powershell界面后,输入mongod --version如果有输出信息,就说明你的环境变量添加成功了。 接下来,直接输入mongod --port 27017命令(--port指定了端口,方便在可视化界面中连接),如果连不上,很大可能会出现"error":"NonExistentPath: Data directory \\data\\db not found. Create the missing directory or specify another path using (1) the --dbpath command line option, or (2) by adding the 'storage.dbPath' option in the configuration file."这是因为你的C盘下没有
data\db文件夹,mongo不知道将数据库文件存放在哪,不过不建议在C盘中添加,因为这样你的C盘负担会很大,可以通过mongod --dbpath=PATH --port 27017来执行,将PATH替换成你的自定义文件夹,但是不要放在mongodb的bin文件夹下!例如,你可以在D盘中创建一个mongodata文件夹,然后命令这样写mongod --dbpath=D:\mongodata --port 27017如果还是不行,有可能是因为你的27017端口被占用了 通过命令
netstat -ano | findstr :27017可以查看当前端口是否被占用,如果有输出,其一般的格式是这样的
TCP 127.0.0.1:27017 0.0.0.0:0 LISTENING 5764 TCP 127.0.0.1:27017 127.0.0.1:63387 ESTABLISHED 5764 TCP 127.0.0.1:27017 127.0.0.1:63388 ESTABLISHED 5764 TCP 127.0.0.1:27017 127.0.0.1:63389 ESTABLISHED 5764最后那个数字就是PID,通过以下命令查看是哪些进程正在占用
tasklist /FI "PID eq 5764"如果是无关紧要的进程,可以通过
taskkill命令关闭掉它,例如Taskkill /F /PID 5764如果你对命令行实在不熟悉,可以通过
Ctrl+Shift+Esc调出任务管理器,在搜索框中输入PID,也可以找到相应的进程。如果你害怕关掉重要进程,可以修改
.env.dev中的MONGODB_PORT为其它值,并在启动时同时修改--port参数为一样的值MONGODB_HOST=127.0.0.1 MONGODB_PORT=27017 #修改这里 DATABASE_NAME=MegBot
Linux(点击展开)
1. 检查 MongoDB 服务是否运行
- 命令:
systemctl status mongod # 检查服务状态(Ubuntu/Debian/CentOS 7+) service mongod status # 旧版系统(如 CentOS 6) - 可能结果:
- 如果显示
active (running),服务已启动。 - 如果未运行,启动服务:
sudo systemctl start mongod # 启动服务 sudo systemctl enable mongod # 设置开机自启
- 如果显示
2. 检查 MongoDB 端口监听
MongoDB 默认使用 27017 端口。
- 检查端口是否被监听:
sudo ss -tulnp | grep 27017 或 sudo netstat -tulnp | grep 27017 - 预期结果:
tcp LISTEN 0 128 0.0.0.0:27017 0.0.0.0:* users:(("mongod",pid=123,fd=11))- 如果无输出,说明 MongoDB 未监听端口。
3. 检查防火墙设置
- Ubuntu/Debian(UFW 防火墙):
sudo ufw status # 查看防火墙状态 sudo ufw allow 27017/tcp # 开放 27017 端口 sudo ufw reload # 重新加载规则 - CentOS/RHEL(firewalld):
sudo firewall-cmd --list-ports # 查看已开放端口 sudo firewall-cmd --add-port=27017/tcp --permanent # 永久开放端口 sudo firewall-cmd --reload # 重新加载 - 云服务器用户注意:检查云平台安全组规则,确保放行 27017 端口。
4. 检查端口占用
如果 MongoDB 服务无法监听端口,可能是其他进程占用了 27017 端口。
-
检查端口占用进程:
sudo lsof -i :27017 # 查看占用 27017 端口的进程 或 sudo ss -ltnp 'sport = :27017' # 使用 ss 过滤端口 -
结果示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 1234 root 12u IPv4 123456 0t0 TCP *:27017 (LISTEN)- 输出会显示占用端口的 进程名 和 PID(此处
PID=1234)。
- 输出会显示占用端口的 进程名 和 PID(此处
-
解决方案:
- 终止占用进程(谨慎操作!确保进程非关键):
sudo kill 1234 # 正常终止进程 sudo kill -9 1234 # 强制终止(若正常终止无效) - 修改端口:
编辑麦麦目录里的.env.dev文件,修改端口号:
MONGODB_HOST=127.0.0.1 MONGODB_PORT=27017 #修改这里 DATABASE_NAME=MegBot - 终止占用进程(谨慎操作!确保进程非关键):
注意事项
- 终止进程前,务必确认该进程非系统关键服务(如未知进程占用,建议先排查来源),如果你不知道这个进程是否关键,请更改端口使用。
macOS(点击展开)
1. 检查 MongoDB 服务状态
问题原因:MongoDB 服务未启动
操作步骤:
# 查看 MongoDB 是否正在运行(Homebrew 安装的默认服务名)
brew services list | grep mongodb
# 如果状态为 "stopped" 或 "error",手动启动
brew services start mongodb-community@8.0
✅ 预期结果:输出显示 started 或 running
❌ 失败处理:
- 若报错
unrecognized service,可能未正确安装 MongoDB,建议重新安装。
2. 检查端口是否被占用
问题原因:其他程序占用了 MongoDB 的默认端口(27017),导致服务无法启动或连接
操作步骤:
# 检查 27017 端口占用情况(需 sudo 权限查看完整信息)
sudo lsof -i :27017
# 或使用 netstat 快速检测
netstat -an | grep 27017
✅ 预期结果:
- 若无 MongoDB 运行,应无输出
- 若 MongoDB 已启动,应显示
mongod进程
❌ 发现端口被占用:
解决方案1:终止占用进程
- 从
lsof输出中找到占用端口的 PID(进程号) - 强制终止该进程(谨慎操作!确保进程非关键):
kill -9 PID # 替换 PID 为实际数字(例如 kill -9 12345) - 重新启动 MongoDB 服务:
brew services start mongodb-community@8.0
解决方案2:修改端口
编辑麦麦目录里的.env.dev文件,修改端口号:
MONGODB_HOST=127.0.0.1
MONGODB_PORT=27017 #修改这里
DATABASE_NAME=MegBot
3. 检查防火墙设置
问题原因:macOS 防火墙阻止连接
操作步骤:
- 打开 系统设置 > 隐私与安全性 > 防火墙
- 临时关闭防火墙测试连接
- 若需长期开放,添加 MongoDB 到防火墙允许列表(通过终端或 GUI)。
4. 重置 MongoDB 环境
仅在以上步骤都无效时使用 适用场景:配置混乱导致无法修复
# 停止服务并删除数据
brew services stop mongodb-community@8.0
rm -rf /usr/local/var/mongodb
# 重新初始化(确保目录权限)
sudo mkdir -p /usr/local/var/mongodb
sudo chown -R $(whoami) /usr/local/var/mongodb
# 重新启动
brew services start mongodb-community@8.0



