单Python脚本运行两个Discord Bot时cogs加载ImportError问题求助
问题原因
- 该
ImportError与你的cogs使用逻辑、自定义代码无关,问题出在第三方反垃圾库Discord AntiSpam和运行环境的版本不匹配上: AsyncMock是Python 3.8及以上版本才内置到unittest.mock模块的工具,你当前使用的Python 3.7环境原生没有该组件。你安装的AntiSpam库版本内部依赖了AsyncMock,因此导入该库时会触发报错。- 单独运行反应身份组bot时无异常,是因为该bot不会导入
antispam相关依赖,自然不会触发该错误。
解决方法
方案1:升级Python版本(推荐)
将虚拟环境的Python版本升级到3.8或更高版本,即可原生支持AsyncMock,适配当前安装的AntiSpam库版本,无需修改业务代码。方案2:降级
如果暂时无法升级Python版本,可以安装适配Python 3.7的旧版Discord AntiSpam库版本AntiSpam库,执行命令:
该版本是最后一个支持Python 3.7的稳定版本,不存在pip install discord-antispam==1.2.2AsyncMock依赖。额外优化建议
你当前使用单个事件循环运行两个bot的写法在高版本discord.py下可能出现事件冲突,更稳妥的方式是拆分两个独立脚本,分别启动两个bot,避免运行时异常。
内容的提问来源于stack exchange,提问作者NimendraK
相关产品推荐
相关产品推荐

