You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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+仍报错:
    强制重新安装Discord.py,修复可能的安装损坏:
    pip install --force-reinstall discord.py
    

2. 清理冲突库

  • 检查是否安装了重名的discord库(非discord.py),这会导致冲突:
    pip show discord
    
    若存在则卸载:
    pip uninstall discord -y
    

3. 恢复Python自带的asyncio

Python3.8已内置足够版本的asyncio,手动安装的第三方asyncio可能引发兼容问题,建议卸载:

pip uninstall asyncio -y

内容的提问来源于stack exchange,提问作者gaia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:52:05