如何解决DiscordBot中asyncio.run引发的AttributeError: __aexit__错误
解决DiscordBot中
AttributeError: __aexit__报错问题 问题原因
async with bot语法需要Discord.py v2.0及以上版本支持,若你的Discord.py版本低于v2.0,或者存在库冲突、安装异常,就会触发该报错。此外,手动安装的第三方asyncio包可能与Python3.8自带版本冲突,也可能引发问题。
解决方案
1. 检查并修正Discord.py版本
- 先查看当前Discord.py版本:
pip show discord.py - 如果版本低于v2.0:
- 方案一:升级到v2.0+(注意v2.0有API变更,需适配代码):
pip install --upgrade discord.py - 方案二:修改代码,移除
async with bot语法,改用兼容v1.x的写法:async def main(): await load_extensions() await bot.start(os.environ['Token']) if __name__ == "__main__": keep_alive.keep_alive() asyncio.run(main())
- 方案一:升级到v2.0+(注意v2.0有API变更,需适配代码):
- 如果版本已是v2.0+仍报错:
强制重新安装Discord.py,修复可能的安装损坏:pip install --force-reinstall discord.py
2. 清理冲突库
- 检查是否安装了重名的
discord库(非discord.py),这会导致冲突:
若存在则卸载:pip show discordpip uninstall discord -y
3. 恢复Python自带的asyncio
Python3.8已内置足够版本的asyncio,手动安装的第三方asyncio可能引发兼容问题,建议卸载:
pip uninstall asyncio -y
内容的提问来源于stack exchange,提问作者gaia
相关产品推荐
相关产品推荐

