Discord.py公会加入dmall

时间:2020-06-20 10:45:01

标签: discord.py discord.py-rewrite

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

但是我需要它来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吗?

2 个答案:

答案 0 :(得分:2)

正如Kai下文所述,这就是做到这一点的方法。但是,由于不和谐的速率限制(例如,您可以以多快的速度执行操作,例如发送消息),建议您增加冷却时间。您需要import asyncio才能正常工作。鉴于只有打印内容且不与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')

答案 1 :(得分:1)

它不起作用,因为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')