几个月前,我与一个叫Diggy(来自这个社区)的家伙一起编码了MassDM机器人,作为我和一些朋友在BlackDesert Online上运行的行会。直到10月28日停止发送DM时,它的工作情况都还不错。一开始,它只是将DM发送给了具有指定角色的成员(105个中的3个)
现在我更新了dicord.py,它不会将消息发送给任何人(有时仅发送给其中一个,或者是两个...有点随机)...
该不和谐服务器中有105个用户,角色为“ Miembros” ...
这是代码...
bot = commands.Bot(command_prefix="+", case_insensitive=True)
bot.remove_command("help")
@commands.has_permissions(administrator=True)
@bot.command()
async def announce(ctx, role: discord.Role, *, msg):
if ctx.channel.id == 708458959991865354:
members = [m for m in ctx.guild.members if role in m.roles]
count = 0
for m in members:
try:
await m.send(msg)
await ctx.send(f":white_check_mark: Mensaje enviado a {m}")
count += 1
except:
await ctx.send(f":x: No se pudo enviar el mensaje a {m}!")
await ctx.send(f"Hecho! {count} miembro{'' if count == 1 else 's'} notificados de un total de {len(members)}")
else:
await ctx.send("Este comando no esta permitido en este canal.")
bot.run("...")
曾经阅读过文档并试图理解如何解决它,但是我想我对python的了解还很差。感谢您的帮助。
答案 0 :(得分:2)
我不确定,但是您的问题可能是由于Intents引起的。在新版本的discord.py(1.5.x)中,对Intents
进行了一些更新。意图类似于权限,您必须对其进行定义以获取频道,成员和某些事件等。必须在定义bot = discord.Bot(prefix='')
之前对其进行定义。
import discord
intents = discord.Intents().all()
bot = discord.Bot(prefix='', intents=intents)
如果要获取有关Intent的更多信息,可以查看API References。