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

discord.py中on_member_join事件的member.guild返回为空问题求助

解决on_member_join事件中member.guild为空的问题

核心问题排查与修复步骤

1. 必须开启Discord后台的成员特权意图

仅在代码中设置intents.members = True无法生效,需在Discord开发者平台完成配置:

  • 进入你的机器人应用后台,切换到「Bot」标签页
  • 在「Privileged Gateway Intents」区域,开启Server Members Intent
  • 保存设置后重启机器人

2. 完善代码中的Intents配置

你当前的Intents未开启guild相关权限,这会导致无法获取Guild对象,修改如下:

import discord
from discord.ext import commands

TOKEN = 'token here'

# 方式1:基于默认意图扩展
intents = discord.Intents.default()
intents.members = True  # 开启成员意图

# 方式2:手动指定所需意图
# intents = discord.Intents()
# intents.guilds = True  # 必须开启,否则无法获取Guild
# intents.members = True

bot = commands.Bot(command_prefix='🧀', intents = intents)

@bot.event
async def on_ready():
    print(f'{bot.user.name} has connected to discord!!!')
    

@bot.event
async def on_member_join(member):
    print('called')
    print(member)
    print(member.guild)
    # 获取服务器第一个文本频道发送欢迎消息
    if member.guild:
        channel = member.guild.text_channels[0]
        await channel.send(f'欢迎 {member.mention} 加入服务器!!!')

bot.run(TOKEN)

3. 额外注意事项

  • 确保机器人在目标服务器拥有「发送消息」权限,且能访问你选择的文本频道
  • 避免依赖text_channels[0]这种不稳定的方式,建议通过频道ID指定目标频道:
    channel = member.guild.get_channel(你的频道ID)
    if channel:
        await channel.send(f'欢迎 {member.mention} 加入服务器!!!')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:30:00