python-3.x 为什么Discord API在发送具有有效权限的DM时返回错误403?

k5ifujac  于 2023-05-19  发布在  Python
关注(0)|答案(1)|浏览(162)

我目前有一个机器人为我的一个客户端,可以DM所有用户在一个特定的角色。对于我的测试服务器,该命令按预期工作,没有任何问题。Discord返回403的唯一一次是当bot试图DM的成员禁用DM时,这很好。然而,当我将更改推送到客户的分支时,他的服务器根本不工作,而是为bot试图发送的每个DM返回403错误。机器人在其服务器上具有管理员权限,并且机器人的角色高于除服务器所有者之外的所有其他角色。我还应该提到我使用的是最新版本的PyCord Package 器,以及Python 3.11。
我已经尝试检查正确的意图,确保所有尝试的DM的DM的开放,以及概述客户端的源代码相比,我的。这在我的测试服务器中完全按照预期工作,只是不是他的。DM循环遍历每个成员,但只是在bot的日志中返回403 - Invalid Permissions错误。
下面是尝试向具有特定角色的每个成员发送DM的代码片段:

# send dm and create
    async def send_dms(image_url):
        # if image is passed in arg
        if image_url is not None:
            embed.set_image(url=image_url)

        # create dm role list
        roles = [role, role2, role3]

        # set description
        embed.description = message

        failures = 0
        successes = 0
        for member in ctx.guild.members:
            if any(item in roles for item in member.roles):
                try:
                    await member.send(embed=embed)
                    successes += 1
                except:
                    failures += 1

        if image is True:
            await confirm(ctx, f"`{successes}` successful DM's sent with `{failures}` failures.", eph=True)
        else:
            await edit_confirm(ctx, f"`{successes}` successful DM's sent with `{failures}` failures.")

如果您有任何问题,请留下评论,我会及时更新问题。

cczfrluj

cczfrluj1#

经过几个星期的寻找,我们终于找到了答案。该机器人因在短时间内发送过多的DM而被Discord“隔离”,并被标记为“可疑”。
除了创建一个新的机器人或联系Discord希望他们取消禁令外,真的没有解决方案。

相关问题