发送消息给多个加标签的用户

时间:2018-07-14 07:57:43

标签: python python-3.x discord discord.py

如何通过标记将消息发送给多个用户。

@bot.command(pass_context=True)
async def ping(ctx, member: discord.Member):
        await bot.send_message(member, "Pong...".format(ctx.message))

因此,上面的代码在标记单个用户?ping @user1时非常有效,但是在标记多个用户?ping @user1 @user2时如何使其工作。

因此可以使其在通道中而不是在脚本中给出自定义消息。例如:当我们输入?ping @user1 @user2时,机器人应要求发送一条消息,当我们添加一条消息时,它将把该消息转发给加标签的用户。

2 个答案:

答案 0 :(得分:1)

我们可以像在任何其他python函数中一样为命令采用可变数量的参数。如果我们将消息放在第一位,并要求将其用引号引起来,那么我们可以在单个命令中完成所有这些操作。

@bot.command(pass_context=True)
async def ping(ctx, message, *members: discord.Member):
    for member in members:
        await bot.send_message(member, message)

用法:

   
!ping "This is a message" @Demotry @PatrickHaugh

编辑:

如果要避免强迫用户将其message括在引号中,可以使用Clint.wait_for_message

@bot.command(pass_context=True)
async def ping(ctx, *members: discord.Member):
    await bot.say("What message would you like to send?")
    message = await bot.wait_for_message(channel=ctx.message.channel, author=ctx.message.author)
    for member in members:
        await bot.send_message(member, message.content)

答案 1 :(得分:0)

message类包含一个mentions属性,您可以对其进行迭代。

@bot.command(pass_context=True)
async def ping(ctx):
    for member in ctx.message.mentions:
        await bot.send_message(member, "Pong...".format(ctx.message))