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

使用discord.py开发机器人时新成员入群欢迎功能无法触发怎么办

问题根因

你配置了包含members权限的Intents对象,但没有将它传入discord.Client()的初始化参数中,导致实际运行时机器人没有启用成员相关的网关事件,on_member_join自然无法触发。

修正方案

将client = discord.Client()修改为client = discord.Client(intents=intents),将你配置好的权限对象传入客户端实例即可。完整修正后的代码如下:

import discord

intents = discord.Intents.default()
intents.members = True

# 传入配置好的intents参数
client = discord.Client(intents=intents)

@client.event
async def on_ready(): # When ready
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_member_join(member):
    print('Someone new!')
    try:
        await member.send("Welcome")
    except:
        # 兼容用户关闭陌生人私信的场景,可替换为频道发欢迎消息逻辑
        print(f"无法向新成员{member.name}发送私信")

@client.event
async def on_message(message): # On every message
    if message.author == client.user: # Cancel own message
        return

    if message.content.startswith('?'):
        await message.channel.send('Command')

client.run(DISCORD_TOKEN)

额外注意事项

  • 如果你使用discord.py 2.0及以上版本,你已经确认开启的Discord开发者后台「Privileged Gateway Intents」下的Server Members Intent权限是正常触发事件的必要前提
  • 向新成员发私信可能因为对方关闭了陌生人私信权限触发异常,建议增加异常捕获逻辑,或者改为在指定的服务器公开欢迎频道发送欢迎消息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:42:03