get_member 总是 returns None (discord.py)
get_member always returns None (discord.py)
我正在尝试让我的机器人从用户 ID 作为 int 到 'fetch' 成员对象。我在开发门户中打开了所有特权网关意图。即使当我拉出我的实际成员对象时,使用 message.author,并将我的 id 放入其中仍然 returns none.
我的代码:
import discord
from discord.ext import commands
intents = discord.Intents().all()
intents.members = True
client = commands.Bot(command_prefix='c!', intents=intents)
## Skip some lines
if message.content.startswith('c! null'):
user = message.author
copy=message.content
testid=int(copy[8:])
testid2= user.id
print(testid)
testing=message.guild.get_member(testid)
testing2=message.guild.get_member(int(testid2))
testing3= bot.get_user(testid)
testing4=message.guild.fetch_member(int(testid2))
guild=message.guild
print(user)
print(testing)
print(testing2)
print(testing3)
print(guild)
print(testing4)
我的输出:
93107305319538088
FakeUser#6969
None
None
None
MockServer
<coroutine object Guild.fetch_member at 0x7fc884680e40>
coroutine 'Guild.fetch_member' was never awaited
await coro(*args, **kwargs)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
I have all Privileged Gateway Intents turned on in Dev portal.
不幸的是,这没有任何作用,因为您的机器人也需要在其内部启用这些意图。
您必须在机器人中启用意图。当您使用 discord.Intents.default()
时,您将在机器人中禁用它们 - 因此,您将无法获得它们。
您需要启用您正在使用的特定意图。
intents = discord.Intents.default()
intents.members = True
#intents.presences = True
#intents.message_content = True
请注意,这仍然会失败。 get_member
如果成员不在机器人的缓存中,有时会失败,尽管这不太可能。
所以是的,你可以使用 fetch,但它是一个 API 调用,所以你需要 testing4 = await message.guild.fetch_member(int(testid2))
.
而不是 testing4=message.guild.fetch_member(int(testid2))
我正在尝试让我的机器人从用户 ID 作为 int 到 'fetch' 成员对象。我在开发门户中打开了所有特权网关意图。即使当我拉出我的实际成员对象时,使用 message.author,并将我的 id 放入其中仍然 returns none.
我的代码:
import discord
from discord.ext import commands
intents = discord.Intents().all()
intents.members = True
client = commands.Bot(command_prefix='c!', intents=intents)
## Skip some lines
if message.content.startswith('c! null'):
user = message.author
copy=message.content
testid=int(copy[8:])
testid2= user.id
print(testid)
testing=message.guild.get_member(testid)
testing2=message.guild.get_member(int(testid2))
testing3= bot.get_user(testid)
testing4=message.guild.fetch_member(int(testid2))
guild=message.guild
print(user)
print(testing)
print(testing2)
print(testing3)
print(guild)
print(testing4)
我的输出:
93107305319538088
FakeUser#6969
None
None
None
MockServer
<coroutine object Guild.fetch_member at 0x7fc884680e40>
coroutine 'Guild.fetch_member' was never awaited
await coro(*args, **kwargs)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
I have all Privileged Gateway Intents turned on in Dev portal.
不幸的是,这没有任何作用,因为您的机器人也需要在其内部启用这些意图。
您必须在机器人中启用意图。当您使用 discord.Intents.default()
时,您将在机器人中禁用它们 - 因此,您将无法获得它们。
您需要启用您正在使用的特定意图。
intents = discord.Intents.default()
intents.members = True
#intents.presences = True
#intents.message_content = True
请注意,这仍然会失败。 get_member
如果成员不在机器人的缓存中,有时会失败,尽管这不太可能。
所以是的,你可以使用 fetch,但它是一个 API 调用,所以你需要 testing4 = await message.guild.fetch_member(int(testid2))
.
testing4=message.guild.fetch_member(int(testid2))