我目前有一个机器人为我的一个客户端,可以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.")
如果您有任何问题,请留下评论,我会及时更新问题。
1条答案
按热度按时间cczfrluj1#
经过几个星期的寻找,我们终于找到了答案。该机器人因在短时间内发送过多的DM而被Discord“隔离”,并被标记为“可疑”。
除了创建一个新的机器人或联系Discord希望他们取消禁令外,真的没有解决方案。