Discord.py开发Discord机器人运行报第58行SyntaxError无效语法错误
错误定位与解决方案
直接报错原因
第58行的语法报错是前一行代码未闭合导致的连锁报错:
你写的cf命令最后一行缺少右括号:
# 错误代码(第56行) await ctx.send(random.choice(coinflip) # 少了末尾的)
Python解析时找不到括号闭合位,就会将下一行的函数定义判定为语法错误,因此报错指针指向第58行的async def maps(ctx):。
修复方法
在第56行末尾补充右括号即可:
await ctx.send(random.choice(coinflip))
其他必须修复的隐性问题
仅修复上述括号问题后代码仍然无法正常运行,还需要修改以下问题:
- 客户端初始化错误:
你同时初始化了commands.client和discord.Client两个客户端,且存在两处错误:commands.client首字母需要大写,应为commands.Botdiscord.Client不支持@client.command()装饰器,会导致所有命令失效
替换原客户端初始化代码:
# 错误代码 client = commands.client(command_prefix='-', help_command=None) client = discord.Client() # 替换为 client = commands.Bot(command_prefix='-', help_command=None) - 所有HTML转义字符
"替换为普通双引号",否则Python无法识别字符串边界。 ping命令中引用的bot.latency变量名错误,你的实例名称是client,改为client.latency。imposter命令中的{message.author.mention}需要改为{ctx.author.mention},且字符串前加f变成f字符串才能解析占位符:await ctx.send(f". 。 •\n゚ 。 .\n. 。 。 . \n. 。 ඞ 。 . • •\n {ctx.author.mention} was An Impostor. 。 .\n0 Impostor remains 。\n . . , . .")maps命令中的列表名maps-au包含非法字符-,Python变量名不允许使用减号,改为maps_au。
内容的提问来源于stack exchange,提问作者user16080338
相关产品推荐
相关产品推荐

