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

discord.py运行警告:未等待BotBase.load_extension协程,求解决方案

问题分析与解决

你的问题出在两个核心点:

  • discord.py 2.x版本后,Bot.load_extension已变为异步协程方法,必须用await关键字等待执行完成,否则会触发"协程从未被等待"的运行警告。
  • 你将Bot.run(TOKEN)放在了for循环内部,这会导致第一次加载扩展后就直接启动Bot,后续扩展完全没机会加载,同时进一步放大了异步方法未被等待的问题。

修复后的代码示例

import os
import asyncio
import discord
from discord.ext import commands

TOKEN = "你的令牌内容"
Bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())

async def load_extensions():
    for filename in os.listdir("./cogs"):
        if filename.endswith('.py'):
            # 用await等待异步加载方法执行完成
            await Bot.load_extension(f'cogs.{filename[:-3]}')

async def main():
    await load_extensions()
    # 所有扩展加载完成后再启动Bot
    await Bot.start(TOKEN)

if __name__ == "__main__":
    asyncio.run(main())

额外说明

  • 若习惯使用Bot.run(),可将其放在所有扩展加载完成之后,但Bot.run()是阻塞方法,更推荐用Bot.start()配合asyncio.run()的写法,更贴合异步编程规范。
  • 确保cogs目录是Python可识别的包(目录下需存在__init__.py文件,空文件即可),否则加载扩展时可能触发导入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:15:18