【发布时间】:2021-03-05 03:41:51
【问题描述】:
我在下面的整个代码中遇到了错误。 我想就错误寻求帮助。 我可以通过查看下面的代码来寻求帮助吗?
async def ban(ctx, member: discord.Member, *, reason: typing.Optional[str] = "사유 없음."):
await ctx.message.delete()
author = ctx.message.author
embed = None
ch = bot.get_channel(id=772349649553850368)
mesge = await ctx.send("차단을 시킬까요?")
await mesge.add_reaction('✅')
await mesge.add_reaction('❌')
def check1(reaction, user):
return user == ctx.message.author and str(reaction.emoji) == "✅"
try:
reaction, user = await bot.wait_for("reaction_add", timeout = 30.0, check = check1)
embed = discord.Embed(title="종합게임 커뮤니티 제재내역 - 차단", description=f'담당자 : {author.mention} \n대상자 : {member.mention} \n제재사유 : {reason} \n\n위와 같은 사유로 인해 제재처리 되었습니다.', color=0xff0000)
embed.set_author(name=f"{str(member)}님을 서버에서 영구적으로 차단했어요.", icon_url=member.avatar_url_as(static_format='png', size=2048))
embed.set_footer(text=f'처리 시각 - {str(now.year)} 년 {str(now.month)} 월 {str(now.day)} 일 | {str(now.hour)} 시 {str(now.minute)} 분 {str(now.second)}초 - 담당자 : {author.display_name}')
await ch.send(embed=embed)
await member.send(embed=embed)
await ctx.guild.ban(member, reason=f'사유 : {reason} - 담당자 : {author.display_name}')
except asyncio.TimeoutError:
print("Timeout")
def check2(reaction, user):
return user == ctx.message.author and str(reaction.emoji) == "❌"
try:
reaction, user = await bot.wait_for("reaction_add", timeout = 30.0, check = check2)
await ctx.send("취소되었다")
except asyncio.TimeoutError:
print("Timeout")
以上代码出现如下错误。
reaction, user = await bot.wait_for("reaction_add", timeout = 30.0, check = check1)
^
SyntaxError: 'await' outside async function
如果你知道如何解决它,请帮忙。
我用了翻译器。
【问题讨论】:
-
您是否尝试将
def check1更改为async def check1和def check2更改为async def check2?我对 async/await 做的不多,但这是我首先要尝试的,因为它似乎是错误消息建议你做的。 -
我认为它的标识。请注意,try 块在函数
check1内...您要删除该代码,使其位于ban中。 -
check2也一样。当它应该向左缩进 4 个空格以便它是父函数的一部分时,您将以下 try 放在函数内。
标签: python discord discord.py