如何通过标记将消息发送给多个用户。
@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
时,机器人应要求发送一条消息,当我们添加一条消息时,它将把该消息转发给加标签的用户。
答案 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))