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

Discord机器人开发报错:'await' outside function 问题求助

解决Discord机器人代码中的'Syntax Error: 'await' outside function'报错

你编写Discord机器人时出现了语法错误,报错信息如下:

File "main.py", line 16
await message.channel.send('hi')
^
Syntax Error: 'await' outside function

你的代码:

import discord
import os

client = discord.client()

@client.event
async def on_ready():
  print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
  if message.author == client.user:
    return

if message.content.startswith('$rank'):
  await message.channel.send('hi')

client.run(process.env.TOKEN)

报错原因

await关键字只能在异步函数(用async修饰的函数)内部使用,而你判断消息内容的if语句没有缩进,不在on_message这个异步函数的作用域里,导致await处于全局作用域,触发语法错误。

另外你的代码还有两个小问题:

  • discord.client()应该写成discord.Client()(首字母大写),否则会引发属性错误
  • process.env.TOKEN是Node.js的环境变量写法,Python要使用os.getenv('TOKEN')

修正后的代码

import discord
import os

# 修正Client首字母大写
client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    # 将判断逻辑缩进,放入on_message异步函数内部
    if message.content.startswith('$rank'):
        await message.channel.send('hi')

# 修正环境变量获取方式
client.run(os.getenv('TOKEN'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:45:34