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

编写Discord Bot时在async def on_ready()附近持续出现语法错误

排查Discord Bot语法错误的几个方向

嘿,我太懂这种代码看着毫无问题,但一跑就报语法错的憋屈感了!既然你已经确认了Python是最新版本,那咱们可以从这几个容易忽略的地方入手排查:

  • 隐藏的非ASCII字符问题:有时候不小心输入了中文的引号、逗号或者分号,甚至是复制粘贴过来的不可见空白字符,这些肉眼根本看不出来,但Python会直接报错。你可以试试:

    • 打开编辑器的「显示所有字符」功能(比如VS Code里按Ctrl+Shift+P搜"Toggle Render Whitespace"),检查有没有奇怪的字符;
    • 用命令行工具排查:Linux/macOS下用cat -A your_bot.py,Windows PowerShell里用Get-Content your_bot.py -Raw | Format-Hex,能看到所有隐藏字符。
  • 缩进混用问题:Python对缩进的要求特别严格,如果代码里同时用了空格和制表符(Tab),哪怕看起来对齐了,也会触发语法错误。你可以:

    • 用Python自带的工具检查:运行python -m tabnanny your_bot.py,它会帮你找出缩进不一致的地方;
    • 把编辑器设置成「将Tab转换为空格」,避免混用。
  • 依赖库的版本兼容:虽然你的Python是最新版,但如果安装的discord.py版本太旧,可能会和新Python的语法特性冲突。试试更新依赖:

    pip install --upgrade discord.py
    
  • 最简代码的“隐形疏漏”:有时候我们觉得的“最简代码”可能还是藏着小问题,比如漏了冒号(比如定义函数def on_ready()后面没加:)、拼写错了关键字,或者括号不匹配。建议把你认为的最简代码再精简到极致——比如只保留导入库和初始化客户端的代码:

    import discord
    from discord.ext import commands
    
    bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())
    
    @bot.event
    async def on_ready():
        print(f'Logged in as {bot.user}')
    
    bot.run('你的TOKEN')
    

    运行这段代码看看会不会报错,如果还是错,那大概率是环境或者编辑器的问题;如果没问题,再一点点加回你的代码,逐步定位错误点。

如果这些方法都试过还是解决不了,把你的最简代码片段贴出来,大家帮你揪细节!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:21:57