我正在制作一个在收到邀请时锁定所有频道的机器人(一个锁定机器人)
但是我需要它来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吗?
答案 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')