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
相关产品推荐
相关产品推荐

