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

如何用Python开发Discord机器人 新用户加入时向指定账号DM发送用户名

Discord新用户加入私信通知实现方案

前置配置

  • 进入Discord开发者后台的对应机器人管理页,在「Privileged Gateway Intents」区域开启Server Members Intent开关,否则on_member_join()事件无法被触发
  • 邀请机器人进入目标服务器时,勾选读取成员、发送消息权限
  • 打开Discord客户端的「设置-高级-开发者模式」,右键自己的头像复制用户ID备用

功能实现代码(基于discord.py v2.x)

import discord

# 初始化网关意图,必须启用成员监听权限
intents = discord.Intents.default()
intents.members = True

client = discord.Client(intents=intents)

# 替换为你自己的Discord用户ID
YOUR_USER_ID = 替换为复制的个人用户ID
# 替换为你的机器人Token
BOT_TOKEN = "替换为你的机器人Token"

@client.event
async def on_ready():
    print(f"机器人已登录:{client.user}")

@client.event
async def on_member_join(member):
    # 获取新用户信息
    username = member.name
    full_tag = str(member) # 格式为「用户名#4位识别码」
    user_id = member.id
    # 获取你的个人账号对象并发送私信
    notify_user = await client.fetch_user(YOUR_USER_ID)
    await notify_user.send(f"新用户加入服务器:\n用户全称:{full_tag}\n用户ID:{user_id}")

if __name__ == "__main__":
    client.run(BOT_TOKEN)

常见异常排查

  • 若收不到私信:确认你没有关闭陌生人私信权限,且机器人与你在至少一个共同服务器中,或互相为好友
  • 若事件不触发:二次检查是否已经开启Server Members Intent,邀请机器人时是否授予了足够权限
  • 获取用户名直接调用member.name即可,需要带#后缀的完整识别名调用str(member)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:54:04