为什么我的机器人说服务器所有者为None?

时间:2020-11-02 04:39:15

标签: python python-3.x discord discord.py

好的,所以我希望机器人说出谁是服务器所有者,但它说当前的服务器所有者为“无”。有办法解决这个问题吗?

代码:

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)

谢谢!

2 个答案:

答案 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...