You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用discord.py实现新成员加入时给Admin角色成员发私信?

实现新成员加入时给Admin角色发私信的Discord机器人方案

嘿,作为编程新手搞Discord机器人确实会有点懵,不过这个需求其实不难实现,我给你一步步拆解,用Python的discord.py库来做(这个库对新手友好,上手门槛低):

第一步:准备工作

  1. 安装discord.py:打开命令行,输入pip install discord.py完成安装
  2. 创建Discord机器人账号:
    • 去Discord开发者平台创建一个新应用,然后添加Bot用户
    • 把机器人邀请到你的服务器,邀请链接要包含bot权限,新手阶段可以直接给机器人Administrator权限方便测试
    • 关键操作:在开发者平台的Bot页面,开启Privileged Gateway Intents下的Server Members Intent,不然机器人监听不到成员加入事件!

第二步:核心代码实现

下面是完整的代码示例,每一行都加了注释,你可以直接复制修改:

import discord
from discord.ext import commands

# 初始化机器人,必须开启成员意图才能监听新成员加入
intents = discord.Intents.default()
intents.members = True  # 这行一定要加!否则监听不到成员加入事件
bot = commands.Bot(command_prefix="!", intents=intents)

# 机器人登录成功后的提示
@bot.event
async def on_ready():
    print(f"机器人已上线!当前登录账号:{bot.user}")

# 监听新成员加入事件
@bot.event
async def on_member_join(member):
    # 找到服务器里的Admin角色,这里替换成你服务器的角色名称(注意大小写完全匹配)
    # 如果想用角色ID更可靠,把name换成id,比如id=123456789012345678
    admin_role = discord.utils.get(member.guild.roles, name="Admin")
    
    # 检查是否找到Admin角色
    if not admin_role:
        print("警告:找不到名为Admin的角色,请检查角色名称是否正确!")
        return
    
    # 遍历所有拥有Admin角色的成员,逐个发私信
    for admin_member in admin_role.members:
        try:
            # 发送私信内容,你可以自定义消息格式
            await admin_member.send(f"📢 新成员 {member.name}#{member.discriminator} 加入了服务器!")
            print(f"已通知管理员:{admin_member.name}")
        except discord.Forbidden:
            # 有些用户关闭了私信权限,捕获这个异常避免机器人崩溃
            print(f"无法通知 {admin_member.name}:对方关闭了私信接收权限")

# 替换成你的机器人Token(从开发者平台Bot页面复制)
bot.run("你的机器人Token")

新手容易踩的坑

  • 忘记开启成员意图:代码里的intents.members = True和开发者平台的Server Members Intent必须同时开启,否则机器人完全监听不到新成员加入的事件
  • 角色名称不匹配:一定要确保代码里的角色名称和服务器里的完全一致(包括大小写、空格),用角色ID会更稳定(开启Discord开发者模式后,右键角色就能复制ID)
  • Token泄露:绝对不要把你的机器人Token上传到GitHub或者公开分享,一旦泄露别人就能控制你的机器人
  • 私信发送失败:有些用户设置了不接收陌生人私信,所以一定要加异常捕获,不然机器人会因为这个报错停止运行

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

火山引擎 最新活动