【问题标题】:Dm everyone who has a role discord.pyDm 每个有角色的人 discord.py
【发布时间】:2021-05-22 23:17:33
【问题描述】:

我想使用on_ready dm 拥有dmme 角色的每个人(dm 更新系统) 但我无法让它工作。我知道这段代码已经过时了,但我以前从来没有做过这样的事情,我不知道该怎么做。

@bot.event
async def on_ready(ctx, member : discord.Member = None, *, message = "test"):
    print("ready")
    if member == "@dmme":
        for server_member in ctx.message.server.members:
            await bot.send_message(server_member, message)

How to DM everyone with a bot - discord.py

How to DM everyone in a Discord server with discord.py?

另外..我怎样才能让它只选择具有该角色的x 用户并且只选择他们(随机测试选择的内部程序)

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:
    @bot.event
    async def on_ready():
        for guild in bot.guilds:  # all servers of the bot
            role = discord.utils.find(lambda r: r.name == 'dmme ', guild.roles)
            for member in guild.members:
                if role in member.roles:
                    await member.send("WHAT_YOU_WANT_TO_SAY")
    

    但是:

    1. 确保为此启用 Intent。
    2. 同时 dm 多人不是一个好主意,因为不和谐的限制。因此,如果您真的想这样做,请三思而后行。 (因为类似的事情,我的机器人被阻止了一小时)

    【讨论】:

    • 鉴于第二个警告,我意识到我 100% 需要随机选择给定数量的用户。真的没有办法做到这一点,对吧?
    • guild.members 是一个列表。因此,您可以使用 random 模块及其 random.choices() 方法来选择随机数量的人。
    猜你喜欢
    • 2022-01-09
    • 2021-11-06
    • 2021-11-14
    • 2023-03-31
    • 2022-01-14
    • 2021-06-12
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    相关资源
    最近更新 更多