You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py DM ALL功能无法向服务器全员发送消息问题咨询

问题原因

你描述的现象核心原因是未启用Discord成员特权网关意图:discord.py v2.0及以上版本默认关闭了服务器成员相关的网关权限,此时ctx.guild.members仅能获取到机器人自身的账号信息,因此遍历的时候只会尝试给机器人自己发私信。

解决步骤

  • 第一步:打开Discord开发者平台,进入你的机器人对应的应用页面,点击左侧「Bot」菜单,下滑找到「特权网关意图」分类,开启服务器成员意图的开关。
  • 第二步:修改代码中client的初始化配置,显式声明启用成员意图,示例初始化代码如下:
import discord
from discord.ext import commands

# 显式配置意图
intents = discord.Intents.default()
intents.members = True # 启用成员意图

# 初始化时传入意图配置
client = commands.Bot(command_prefix='你的命令前缀', intents=intents)
  • 第三步:原有业务逻辑代码建议优化异常捕获逻辑,避免裸except吞掉所有错误信息影响排查:
@client.command()
async def adm(ctx, *, message):
    await ctx.message.delete()
    for user in ctx.guild.members:
        try:
            await user.send(message)
            print(f"已向{user.name}发送私信")
        except discord.Forbidden:
            print(f"无法向{user.name}发送私信:用户关闭了陌生人私信权限/机器人被拉黑")
        except Exception as e:
            print(f"向{user.name}发送私信失败:{str(e)}")
    print("全员私信操作执行完毕")

补充说明

部分服务器开启了全员私信限制,或者用户设置了非共同服务器成员无法发送私信,这类场景触发的发送失败属于Discord平台的正常限制,无法通过代码规避。

内容的提问来源于stack exchange,提问作者qEniuu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:54:01