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

discord.py机器人加入新服务器时如何正确展示服务器总成员数量?

问题原因

guild.members 是服务器所有成员对象的列表,直接作为值传入embed字段时,会被自动转换为列表的字符串表达形式,也就是你现在看到的成员对象拼接内容。

代码修改

将on_guild_join事件中Members字段的value值替换为guild.member_count即可,该属性直接返回服务器总成员数,会正常展示数字:

import discord
from discord.ext import commands
import asyncio
import requests
import time
import random 

# discord.py 2.0+版本需要先配置成员意图才能拿到正确的成员数
intents = discord.Intents.default()
intents.members = True
# 替换你原有client初始化代码,添加intents参数
client = commands.Bot(command_prefix='自定义前缀', intents=intents)

@client.event
async def on_guild_join(guild):
    channel = client.get_channel(899768588011966478)
    invite = await guild.system_channel.create_invite()

    e = discord.Embed(color=0xd41818,title="I joined a server")
    e.add_field(name="Server Name", value=guild.name, inline=False)
    e.add_field(name="Invite", value=invite, inline=False)
    # 仅修改下方这一行即可
    e.add_field(name="Members", value=guild.member_count, inline=False)
    await channel.send(embed=e)

client.run(token)

额外注意事项

  • 如果你使用的是discord.py 2.0及以上版本,需要先到Discord开发者平台的机器人管理页面,开启Server Members Intent(服务器成员意图)特权开关,否则获取到的成员数只会包含机器人自己。
  • 如果目标服务器没有启用系统频道,guild.system_channel会返回None,创建邀请的代码会报错,可以额外添加判断逻辑规避崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:07