你如何摆脱“SyntaxError:'await'外部函数”
Posted
技术标签:
【中文标题】你如何摆脱“SyntaxError:\'await\'外部函数”【英文标题】:How do you get rid of "SyntaxError: 'await' outside function"你如何摆脱“SyntaxError:'await'外部函数” 【发布时间】:2021-04-25 02:04:57 【问题描述】:我正在尝试将不和谐机器人更改为在线状态
我一直在使用 pycharm 和终端。我尝试过以多种不同的方式重新排序代码,但这就是我现在所拥有的
import discord
from discord.ext import commands
client = commands.Bot(command_prefix=".")
@client.event
async def on_ready():
print('Bot is ready.')
await client.run(bot token)
我也试过这些:
import discord
from discord.ext import commands
client = commands.Bot(command_prefix=".")
@client.event
async def on_ready():
print('Bot is ready.')
await client.run(bot token)
on_ready
和
import discord
from discord.ext import commands
client = commands.Bot(command_prefix=".")
@client.event
async def on_ready():
print('Bot is ready.')
await client.run(bot token)
on_ready
我收到了这些错误:
:8: RuntimeWarning: coroutine 'on_ready' 从未等待 RuntimeWarning: Enable tracemalloc 获取对象分配回溯
和
SyntaxError: 'await' 外部函数
请帮我让机器人上线
【问题讨论】:
【参考方案1】:首先,await
不能在 async def
函数之外,你等待的东西没有缩进到函数 on_ready
内部。
其次,你不应该尝试手动调用on_ready
,一旦机器人运行,它会自己调用on_ready
。
第三,永远不要把client.run
放在on_ready
里面!而是把它放在文件的末尾,如果你把它放在on_ready里面,它就永远不会运行。 p>
所以,这将是理想的代码:
@client.event
async def on_ready():
print('Bot is ready!')
client.run(TOKEN)
至于存储你的机器人令牌,我会把它放在一个数据库中,比如 replit 或 mongoDB 数据库。
【讨论】:
【参考方案2】:client.run() 不需要 await 函数 放
async def on_ready():
print("Bot is ready.")
并将 client.run 放在文件末尾。在我的例子中,我使用了一个名为 config.py 的文件,我在其中声明了 token 的值
token = "Enter your token here"
为了导入变量,我使用import config
导入了配置,因为它在配置文件中,所以我输入了client.run(config.token)
【讨论】:
【参考方案3】:打印功能需要另外4个空格:
async def on_ready():
print("Bot is ready.")
如果问题仍然存在,请尝试安装 asyncio
【讨论】:
以上是关于你如何摆脱“SyntaxError:'await'外部函数”的主要内容,如果未能解决你的问题,请参考以下文章
SyntaxError: await is only valid in async function
你如何摆脱 ConfigurationPropertiesRebinderAutoConfiguration INFO 日志消息