当我尝试运行命令时,我总是收到此错误消息:SyntaxError: 'await' external function 可能是非常简单的错误,但我真的没有看到其中的错误。有人可以帮忙吗?
import discord
from discord.ext import commands
class unban(commands.Cog):
def __init__(self, client):
self.client = client
# Commandok
@commands.command()
async def unban(ctx, *, member): # unindent
banned_users = await ctx.guild.bans() # unindent
member_name, member_discriminator = member.split('#') # unindent
for ban_entry in banned_users:
user = ban_entry.user
if (user.name, user.discriminator) == (member_name, member_discriminator):
await ctx.guild.unban(user)
await ctx.send(f'Unbanned {user.mention}')
return
def setup(client):
client.add_cog(unban(client))
discord.ext.commands.errors.ExtensionFailed:扩展“cogs.unban”引发错误:SyntaxError:“await”外部函数(unban.py,第 20 行)
我认为你的函数定义行可能缩进太多了。
@commands.command()
async def unban(ctx, *, member): # unindent
banned_users = await ctx.guild.bans() # unindent
member_name, member_discriminator = member.split('#') # unindent
for ban_entry in banned_users:
user = ban_entry.user
if (user.name, user.discriminator) == (member_name, member_discriminator):
await ctx.guild.unban(user)
await ctx.send(f'Unbanned {user.mention}')
return
您的
if
语句不在您的 for
循环中。这应该有效:
@commands.command()
async def unban(ctx, *, member):
banned_users = await ctx.guild.bans()
member_name, member_discrinimator = member.split('#')
for ban_entry in banned_users:
user = ban_entry.user
if (user.name, user.discriminator) == (member_name, member_discrinimator):
await ctx.guild.unban(user)