如何用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
相关产品推荐
相关产品推荐

