Mass DM bot运行正常,现在不会发送消息

时间:2020-10-31 08:40:32

标签: python discord.py

几个月前,我与一个叫Diggy(来自这个社区)的家伙一起编码了MassDM机器人,作为我和一些朋友在BlackDesert Online上运行的行会。直到10月28日停止发送DM时,它的工作情况都还不错。一开始,它只是将DM发送给了具有指定角色的成员(105个中的3个)

enter image description here

现在我更新了dicord.py,它不会将消息发送给任何人(有时仅发送给其中一个,或者是两个...有点随机)...

enter image description here

该不和谐服务器中有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的了解还很差。感谢您的帮助。

1 个答案:

答案 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