repl.it运行Discord bot出现Positional arguments错误如何修复
错误根因
你的format方法传入参数数量和字符串占位符数量不匹配:
- 字符串模板
'https://antmap.coc.tools/images/{0}/{0}.{1}png'里声明了{0}、{1}两个位置占位符,要求传入2个参数 - 你实际只给
format传入了'/'.join(args).capitalize()这1个参数,因此索引为1的占位符找不到对应值,触发IndexError。
修复方案
根据你的实际业务需求选择对应修复方式:
方案1:仅需1个参数生成链接
如果你要生成的链接格式为https://antmap.coc.tools/images/[参数]/[参数].png,说明你多写了无效的{1}占位符,直接修改模板即可:
# 替换你原来的字符串模板行 'https://antmap.coc.tools/images/{0}/{0}.png'.format('/'.join(args).capitalize())
方案2:确实需要2个参数生成链接
如果你要生成的链接格式为https://antmap.coc.tools/images/[参数1]/[参数1].[参数2]png,你需要补充传入第二个参数,同时增加参数合法性校验,避免用户输入参数不足:
# 先做参数校验 if len(args) < 2: await ctx.send("参数错误,正确用法:!acz maps [地图名称] [资源后缀]") return # 正常生成链接 map_name = '/'.join(args[:-1]).capitalize() res_suffix = args[-1] img_url = 'https://antmap.coc.tools/images/{0}/{0}.{1}png'.format(map_name, res_suffix)
注意:如果你的资源后缀和png之间需要加
.,可以把模板修改为'https://antmap.coc.tools/images/{0}/{0}.{1}.png',避免生成xxxjpgpng这类错误格式的链接。
内容的提问来源于stack exchange,提问作者Jakub Šidlík
相关产品推荐
相关产品推荐

