discord.py公会加入dmall

discord.py guild join dmall

我正在制作一个机器人,在收到邀请时锁定所有频道(锁定机器人)

但我需要它来 DM 服务器中的所有用户这是我的代码:

@bot.event
async def on_guild_join(ctx, mem):
for mem in ctx.guild.members:
        try:
            await mem.send("Hello")
        except:
             print('User dm closed')

但我没有得到任何输出,也没有 DM?

它不起作用,因为 on_guild_join 没有成员或 ctx 参数。 on_guild_join 有参数 guild,见 discord.on_guild_join Guild 有列表对象成员,请参阅 Guild.members 您的代码可能如下所示。

@bot.event
async def on_guild_join(guild):
    members = guild.members
    for member in members:
        try:
            await member.send("Hello")
        except:
            print('User dm closed')

正如 Kai 在下面所说的那样,这就是实现它的方法。然而,由于 discord 的速率限制(即你可以多快地做事,比如发送消息),我建议添加一个冷却时间。您需要 import asyncio 才能正常工作。考虑到 except 只打印并且不与 discord 交互 api,你应该只在发送消息后睡觉。

@bot.event
async def on_guild_join(guild):
    members = guild.members
    for member in members:
        try:
            await member.send("Hello")
            await asyncio.sleep(1)
        except:
            print('User dm closed')