向discord命令添加可选参数


@bot.command()
# async def poll(ctx, message, arg1, arg2):
async def poll(ctx, message, *args):
if len(args) <= 3:
emoji = '1️⃣'
pollem = discord.Embed(title='', description=f'{message}')
pollem.add_field(name='{1} {0}'.format(args[len(args)], emoji), value=args[len(args)], inline=False)
pollem.add_field(name='{1} {0}'.format(args[len(args)], emoji), value=args[len(args)], inline=False)
# pollem.add_field(name='{1} {0}'.format(args[2], emoji), value=args[2], inline=False)
# pollem.add_field(name='{1} {0}'.format(args[3], emoji), value=args[3], inline=False)

这就是我现在的代码。命令为.poll {message} {arg 0} {arg 1} {arg 2} {arg 3} {arg (n)}现在我试着获得一个可选的args数量,但我不知道我将如何实现。如果我像.poll {message} {arg 0} {arg 1}一样尝试,我会得到

IndexError: tuple index out of range

有什么建议吗?

Python索引从0开始。如果你做args[len(args)],你会得到超出范围的索引。如果你想访问最后一个参数,你需要做args[-1]

编辑:正如评论中所说,你只需要做args[-1]

你能试试这个吗?

@bot.command()
# async def poll(ctx, message, arg1, arg2):
async def poll(ctx, message, *args):
if 0 < len(args) <= 3:
emoji = '1️⃣'
pollem = discord.Embed(title='', description=f'{message}')
pollem.add_field(name='{1} {0}'.format(args[len(args) - 1], emoji), value=args[len(args) - 1], inline=False)
pollem.add_field(name='{1} {0}'.format(args[len(args) - 1], emoji), value=args[len(args) - 1], inline=False)

对不起,耽误了几天时间。这是代码。

for x in range(1, len(args), 2):
context.append(args[x])
for a in range(0, len(args), 2):
pollem.add_field(name=' {1} {0}'.format(args[a], reaction[int(r / 2)]), value=context[int(a / 2)],
inline=False)
ms = await ctx.channel.send(embed=pollem)
else:
await ctx.channel.send('Check Args')

如果有人有任何问题,只是嗯!

最新更新