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

如何获取Discord服务器非机器人成员列表并验证用户名有效性

解决Discord机器人获取服务器非机器人成员列表的问题

核心问题分析

你当前代码里的全局Users列表无法动态同步服务器成员的变化,也没有正确获取服务器内的非机器人用户。正确的做法是在命令执行时实时获取当前服务器的成员列表,而非提前存储在全局变量中。

解决方案步骤

  1. 确保Intents配置正确
    除了代码里的intents = discord.Intents.all(),你需要在Discord开发者门户的机器人页面,开启Server Members Intent(服务器成员意图),否则机器人无法获取服务器成员数据。

  2. 修改代码,实时获取非机器人成员
    不需要全局的Users列表,在Fight命令内部直接获取当前服务器的非机器人成员即可:

intents = discord.Intents.all()

bot = commands.Bot(command_prefix='!logan',
                   intents=intents,
                   help_command=None)  # 若你有自定义helpCommand,替换成你的实现即可


@bot.command()
async def Fight(ctx, target_username):
    # 实时获取当前服务器所有非机器人成员的用户名
    non_bot_users = [member.name for member in ctx.guild.members if not member.bot]
    
    if ctx.author.name == target_username:
        await ctx.send("你不能和自己决斗")
        return
    
    if target_username in non_bot_users:
        # 找到对应成员对象,方便后续发送私信
        target_member = discord.utils.get(ctx.guild.members, name=target_username)
        
        # 优化文件操作:用with语句自动管理文件关闭
        with open(str(ctx.author.name), "w") as f:
            f.write(f"{target_username}\n300\nTurn")
        with open(target_username, "w") as f:
            f.write(f"{ctx.author.name}\n300\nNot")
        
        await ctx.author.send(f"你现在正在和 {target_username} 决斗")
        if target_member:
            await target_member.send(f"你现在正在和 {ctx.author.name} 决斗")
    else:
        await ctx.send("该用户不在此服务器中")

额外注意事项

  • 用户名重复问题:Discord允许不同用户使用相同用户名,仅靠name验证可能出错。更可靠的方式是让用户输入用户ID或使用discord.Member类型参数,直接获取成员对象:
    @bot.command()
    async def Fight(ctx, target_member: discord.Member):
        if target_member == ctx.author:
            await ctx.send("你不能和自己决斗")
            return
        if target_member.bot:
            await ctx.send("不能和机器人决斗")
            return
        
        # 后续逻辑直接使用target_member对象,比如target_member.name、target_member.send()
    
    这种方式用户只需@目标用户,机器人就能自动解析成成员对象,彻底避免用户名重复的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:55:19