向Python中的特定角色发送私有消息

向Python中的特定角色发送私有消息,python,discord.py,Python,Discord.py,如何向Python中的特定角色发送私有消息 以下是我已经做过的: @bot.command(name='dm') async def on_message(ctx): role = get(ctx.guild.roles, id=839182749452992632) for user in ctx.guild.members: if user.roles == role: await bot.send_message(u

如何向Python中的特定角色发送私有消息

以下是我已经做过的:

@bot.command(name='dm')
async def on_message(ctx):
    
    role = get(ctx.guild.roles, id=839182749452992632)    
    for user in ctx.guild.members:
        if user.roles == role:
            await bot.send_message(user, 'hello')
            

user.roles
返回一个列表,但您仅将其与单个
role
对象进行比较。这将始终是
False
。相反,请检查所需角色是否在
user.roles
中。如果是,请检查该用户是否已经有DM,否则创建一个DM并发送消息

导入异步IO
@bot.command(name='dm')
异步def on_消息(ctx):
role=get(ctx.guild.roles,id=839182749452992632)
对于ctx.guild.members中的用户:
如果用户角色位于user.roles中:
如果user.dm_通道为无:
等待用户。创建_dm()
等待user.dm_channel.send(“你好”)
等待asyncio.sleep(1)

不过,您还应该包括一个延迟,以避免被discord反垃圾邮件系统标记

Thx@itzFlubby它解决了我的问题,顺便说一句,要想让它起作用,所有用户都必须允许来自服务器成员的直接消息,对吗?我不是100%确定,但我会说是的,他们必须允许来自服务器成员的直接消息我正在测试,而机器人只向我发送消息,你知道@itzFlubby有什么问题吗?如果没有,np,我将对ITI进行更多搜索。如果bot将消息发送给您,它还应将消息发送给您指定角色的其他所有人。如果不是,可能会在用户中的角色之后打印每个用户。角色:以缩小问题范围。如果你喜欢,我们也可以将其移动到一个服务器上。由于我正在服务器上测试,并且有人给我反馈,所以bot没有向所有人发送消息,我将打印所有用户以查看发生了什么。当然,我们可以继续聊天,如果你有时间帮助我,我将非常感谢@itzFlubby