如何使用机器人对所有人进行DM - discord.py

Jos*_*era 6 python dm python-3.x discord.py

好吧,我正在为一个特定的用户做DM直接消息功能,但我一直在寻找这样做的方式,所以我可以在服务器上给每个人发消息,而我却没有得到它.我正在使用discord.py 0.16.9作为参考.这是我目前的代码:

@client.command(pass_context = True)
async def dm(ctx, member : discord.Member = None, *, message):
    if not ctx.message.author.server_permissions.administrator:
        return
    if not member:
        return await client.say(ctx.message.author.mention + "Specify a user to DM!")
    if member = "@everyone":
        member = 
    else:
        await client.send_message(member, message)
Run Code Online (Sandbox Code Playgroud)

ran*_*999 9

正如评论中已经说过的那样,对每个人来说都不是一个好主意,但如果必须,你可以迭代服务器的所有成员并单独发送消息.在你的例子中:

if member == "@everyone":
    for server_member in ctx.message.server.members:
        await client.send_message(server_member, message)
Run Code Online (Sandbox Code Playgroud)

  • 在发送下一条消息之前,没有理由等待每条消息返回响应,特别是因为`discord.py`在安静地和原生地处理速率限制; 最好使用`asyncio.gather`或`asyncio.wait`. (2认同)