SyntaxError: 'await' outside async function
SyntaxError: 'await' outside async function
所以我正在尝试向我的机器人添加 queue。但它给了我标题中的错误。
这是向 queue 添加内容的命令:
@commands.command()
async def remove(self, ctx, number):
global queue
try:
del (queue[int(number)])
await ctx.send(f'Your queue is now `{queue}!`')
except:
await ctx.send("Your queue is either **empty** or **out of range**")
这是我播放 queue 的代码(我尝试了一种不同的方式,但我不知道如果当前歌曲停止播放,如果它不在函数中,如何播放下一首歌曲,所以是的,这就是为什么它就像在 def)
def queuePlayer():
YDL_OPTIONS = {'format': "bestaudio"}
vc = ctx.voice_client
FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
with youtube_dl.YoutubeDL(YDL_OPTIONS) as ydl:
global queue
info = ydl.extract_info(f"ytsearch:{queue[0]}", download=False)
if 'entries' in info:
video = info['entries'][0]
else:
video = info
url2 = video['formats'][0]['url']
def convert(seconds):
seconds = seconds % (24 * 3600)
hour = seconds // 3600
seconds %= 3600
minutes = seconds // 60
seconds %= 60
return "%d:%02d:%02d" % (hour, minutes, seconds)
print(video)
video_url = video['url']
print(video_url)
source = await discord.FFmpegOpusAudio.from_probe(url2, **FFMPEG_OPTIONS)
vc.play(source)
del (queue[0])
print(video['title'])
track = video['title']
artist = video['channel']
duration = video['duration']
durationConv = convert(duration)
thumbnail = video['thumbnail']
embedVar = discord.Embed(title="Now playing", description=":notes: {}".format(track), color=0x00ff00)
embedVar.add_field(name="Artist", value=":microphone: {}".format(artist), inline=False)
embedVar.add_field(name="Duration", value=f":hourglass_flowing_sand: `{durationConv}`", inline=False)
embedVar.set_thumbnail(url=thumbnail)
await ctx.send(embed=embedVar)
t = duration
while t:
time.sleep(1)
t -= 1
print(t)
print("TIMER REACHED 0")
if t == 0:
print("T IS 0")
await ctx.send("Playing next!")
queuePlayer()
queuePlayer()
discord 的 api 使用异步库,因此它使用 'await.' 调用库的函数,从 discord 服务器获取您正在使用的数据。当您编写通过客户端的命令时,您将它与 'async def' 一起使用。您收到该错误的原因是因为您试图在常规 python 函数(使用 'def' 而不是 'async def.' 定义)中使用 'await' 它不会工作是因为没有什么可等待的,并且由于它是一个常规(同步)函数而不是异步函数,您将无法在不和谐的情况下调用它,并且由于您无法调用它,因此不会有任何上下文来发送留言给。
对于你想要做的事情,我建议将它从 'def' 更改为 'async def' 并添加 @commands.command(),然后从那里摆弄它。有时需要一段时间才能做对,但通常情况下你最终会做对!
所以我正在尝试向我的机器人添加 queue。但它给了我标题中的错误。
这是向 queue 添加内容的命令:
@commands.command()
async def remove(self, ctx, number):
global queue
try:
del (queue[int(number)])
await ctx.send(f'Your queue is now `{queue}!`')
except:
await ctx.send("Your queue is either **empty** or **out of range**")
这是我播放 queue 的代码(我尝试了一种不同的方式,但我不知道如果当前歌曲停止播放,如果它不在函数中,如何播放下一首歌曲,所以是的,这就是为什么它就像在 def)
def queuePlayer():
YDL_OPTIONS = {'format': "bestaudio"}
vc = ctx.voice_client
FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
with youtube_dl.YoutubeDL(YDL_OPTIONS) as ydl:
global queue
info = ydl.extract_info(f"ytsearch:{queue[0]}", download=False)
if 'entries' in info:
video = info['entries'][0]
else:
video = info
url2 = video['formats'][0]['url']
def convert(seconds):
seconds = seconds % (24 * 3600)
hour = seconds // 3600
seconds %= 3600
minutes = seconds // 60
seconds %= 60
return "%d:%02d:%02d" % (hour, minutes, seconds)
print(video)
video_url = video['url']
print(video_url)
source = await discord.FFmpegOpusAudio.from_probe(url2, **FFMPEG_OPTIONS)
vc.play(source)
del (queue[0])
print(video['title'])
track = video['title']
artist = video['channel']
duration = video['duration']
durationConv = convert(duration)
thumbnail = video['thumbnail']
embedVar = discord.Embed(title="Now playing", description=":notes: {}".format(track), color=0x00ff00)
embedVar.add_field(name="Artist", value=":microphone: {}".format(artist), inline=False)
embedVar.add_field(name="Duration", value=f":hourglass_flowing_sand: `{durationConv}`", inline=False)
embedVar.set_thumbnail(url=thumbnail)
await ctx.send(embed=embedVar)
t = duration
while t:
time.sleep(1)
t -= 1
print(t)
print("TIMER REACHED 0")
if t == 0:
print("T IS 0")
await ctx.send("Playing next!")
queuePlayer()
queuePlayer()
discord 的 api 使用异步库,因此它使用 'await.' 调用库的函数,从 discord 服务器获取您正在使用的数据。当您编写通过客户端的命令时,您将它与 'async def' 一起使用。您收到该错误的原因是因为您试图在常规 python 函数(使用 'def' 而不是 'async def.' 定义)中使用 'await' 它不会工作是因为没有什么可等待的,并且由于它是一个常规(同步)函数而不是异步函数,您将无法在不和谐的情况下调用它,并且由于您无法调用它,因此不会有任何上下文来发送留言给。
对于你想要做的事情,我建议将它从 'def' 更改为 'async def' 并添加 @commands.command(),然后从那里摆弄它。有时需要一段时间才能做对,但通常情况下你最终会做对!