好的,所以我希望机器人说出谁是服务器所有者,但它说当前的服务器所有者为“无”。有办法解决这个问题吗?
代码:
guild = ctx.guild
embed = discord.Embed(timestamp=ctx.message.created_at, color=discord.Color.dark_green())
embed.set_thumbnail(url=guild.icon_url)
embed.add_field(name="Members", value=guild.member_count)
embed.add_field(name="Region", value=guild.region, inline=True)
embed.add_field(name="Owner", value=guild.owner, inline=True)
embed.add_field(name="Created", value=guild.created_at, inline=True)
embed.add_field(name="Channels", value=len(guild.channels), inline=True)
embed.add_field(name="Roles", value=len(guild.roles), inline=True)
embed.add_field(name="Boosters", value=guild.premium_subscription_count, inline=True)
embed.set_author(name=f"{guild} | ID: {guild.id}", icon_url=guild.icon_url)
embed.set_footer(text=f"Requested by {ctx.author.name}#{ctx.author.discriminator}", icon_url=ctx.author.avatar_url)
await ctx.send(embed=embed)
谢谢!
答案 0 :(得分:0)
从文档中:
如果
fetch_offline_members
设置为False
,则用户缓存不会 存在。这使得很难或不可能做很多事情,因为 例如:计算权限
通过VoiceChannel查询语音通道中的成员.members将是 空的。
大多数形式的接收会员将改为接收用户,除了 用于消息事件。
Guild.owner通常会解析为“无”。
要解决此问题,您可能需要为客户端设置其他选项:
discord.Client(*, loop=None, fetch_offline_members = True)
如果与问题here有关,您可以尝试检查的另一种方法是guild.owner_id
。
答案 1 :(得分:0)
我强烈怀疑您的问题来自新的Discord Privileged Gateway意图。您可以在discord.py文档的this page中阅读有关它们的更多信息。
要解决您的问题,请尝试以下方法。首先,通过转到https://discord.com/developers/applications/<app_id>/bot
并选中“服务器成员意图”,在Discord应用程序上启用“成员特权”意图。
然后,通过以下方式使用成员意图:
import discord
intents = discord.Intents(members=True)
client = commands.Bot(command_prefix="!", intents=intents)
# The remainder of your code...