嗨,我正在创建一个可以制作积分表/排行榜的机器人,以下是能正常工作的代码:
def check(ctx):
return lambda m: m.author == ctx.author and m.channel == ctx.channel
async def get_input_of_type(func, ctx):
while True:
try:
msg = await bot.wait_for('message', check=check(ctx))
return func(msg.content)
except ValueError:
continue
@bot.command()
async def start(ctx):
await ctx.send("How many total teams are there?")
t = await get_input_of_type(int, ctx)
embed = discord.Embed(title=f"__**{ctx.guild.name} Results:**__", color=0x03f8fc,timestamp= ctx.message.created_at)
lst = []
for i in range(t):
await ctx.send(f"Enter team {i+1} name :")
teamname = await get_input_of_type(str, ctx)
await ctx.send("How many kills did they get?")
firstnum = await get_input_of_type(int, ctx)
await ctx.send("How much Position points did they score?")
secondnum = await get_input_of_type(int, ctx)
lst.append((teamname, firstnum, secondnum)) # append
lstSorted = sorted(lst, key = lambda x: int(x[1]) + int(x[2],),reverse=True) # sort
for teamname, firstnum, secondnum in lstSorted: # process embed
embed.add_field(name=f'**{teamname}**', value=f'Kills: {firstnum}\nPosition Pt: {secondnum}\nTotal Pt: {firstnum+secondnum}',inline=True)
await ctx.send(embed=embed)
结果大致如下: 但是我想知道,是否可以做些什么来以表格形式获得结果,像队名、位置分数、总积分、击杀积分这样的一行写在一起,然后将结果打印在它们下面(如果这让你明白我想说什么,那就好了)。
下面的图片将帮助您理解, 所以我希望结果以以下格式呈现。我无法想到一种方法来做到这一点,如果您能回答这个问题,请这样做,这将非常有帮助!谢谢。