首页 > 解决方案 > massping 命令 - discord.py

问题描述

我正在尝试创建一个命令,从服务器获取 5 个随机人并提及他们。我到目前为止是这样的:

@bot.command()
async def massping(ctx):
    await ctx.message.delete()
    user = choice(ctx.message.channel.guild.members)
    user2 = choice(ctx.message.channel.guild.members)
    user3 = choice(ctx.message.channel.guild.members)
    user4 = choice(ctx.message.channel.guild.members)
    user5 = choice(ctx.message.channel.guild.members)

    message = await ctx.send(f'{user.mention}{user2.mention}{user3.mention}{user4.mention}{user5.mention}')
    await message.delete()

这样做的问题是,有时它会 ping 同一个人两次。有什么办法可以解决这个问题,所以我可以确保它总是 ping 5 个不同的人?

任何帮助表示赞赏。

标签: pythonpython-3.xdiscorddiscord.py

解决方案


Guild.members返回成员对象的列表,您可以使用random.sample它从列表中返回唯一元素。

async def ping(ctx, num: int):
    members = [m.mention for m in ctx.guild.members]
    rand = random.sample(members, num)
    await ctx.send("\n".join(rand))

推荐阅读