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

discord.py发送欢迎消息时@bot.event不触发如何解决?

问题根源

你遇到的问题是未开启成员相关的网关特权意图导致的,discord.py 从1.5版本开始要求显式声明需要的网关意图,on_member_join属于需要单独授权的特权事件,默认不会被触发。

解决步骤

  • 第一步:修改代码,显式配置并开启成员意图
    修改bot初始化部分的代码,增加意图配置:
# 新增意图配置
intents = discord.Intents.default()
intents.members = True

# 创建bot实例时传入intents参数
bot = commands.Bot(command_prefix=config.PREFIX, case_insensitive=True, intents=intents)
  • 第二步:在Discord开发者后台开启对应特权开关

    1. 打开Discord开发者门户,进入你的机器人应用页面
    2. 切换到左侧「Bot」标签页
    3. 向下滚动找到「Privileged Gateway Intents」分区
    4. 打开「Server Members Intent」右侧的开关
  • 可选优化(建议添加):
    对频道ID做判空处理,避免ID错误导致程序抛出异常:

@bot.event
async def on_member_join(member):
    print("a member joined")
    welcome_channel = bot.get_channel(851883872186400812)
    if welcome_channel:
        await welcome_channel.send(f"<@!{member.id}> just joined the server! Welcome and enjoy your stay!")
    else:
        print("欢迎频道ID错误,未找到对应频道")

其他排查点

如果修改后依然有问题,可以逐一检查:

  • 确认机器人已经加入对应服务器,且拥有欢迎频道的「发送消息」「提及成员」权限
  • 确认填写的频道ID是正确的,不要和服务器ID、消息ID混淆
  • 确认你的discord.py版本符合要求,建议使用2.x以上的稳定版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 22:06:02