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

为什么discord.py的on_member_join事件无报错但无法运行?

on_member_join事件无法触发修复方案
  • 首先修正函数参数错误:on_member_join触发时Discord会主动传入新加入的成员实例作为参数,你当前的代码未定义接收参数,会直接抛出参数不匹配异常,将函数定义修改为:
async def on_member_join(member):
  • 第二步开启成员监听专属权限:Discord API v8及以上版本默认关闭成员相关事件的推送权限,需要两处配置同时开启才能正常接收事件:
    1. 代码初始化Bot时开启members意图,示例配置:
    import discord
    from discord.ext import commands
    
    # 初始化意图对象并启用成员相关权限
    intents = discord.Intents.default()
    intents.members = True
    # 实例化Bot时传入意图配置
    bot = commands.Bot(command_prefix='你自定义的前缀', intents=intents)
    
    1. 登录Discord开发者平台,进入当前Bot的管理页面,在「Privileged Gateway Intents」分类下开启「Server Members Intent」开关
  • 可选兜底优化:增加频道存在性判断,避免因频道ID错误、Bot无频道访问权限导致的空指针报错,完整代码参考:
@bot.event
async def on_member_join(member):
    channel = bot.get_channel(908427699595378699)
    if channel:
        await channel.send("We've got a new member!")
    else:
        print("目标频道不存在或Bot无访问权限")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:36:03