[英]Discord.py: Get user object with id
我有一个机器人,它只保存用户的 id(这样工作更好)。 现在我想从那个 id 中获取用户对象。
我试过以下这对我不起作用,也许我做错了什么..
client = discord.Client
client.get_user(id)
和client.get_user_info(id)
这是代码:
import discord
class MyClient(discord.Client):
ntd = name_table.get_all_records() #google sheets api: returns a list of dicts
async def on_message(self, message):
print(message.content[1])
if message.author == client.user:
return
if isinstance(message.channel, discord.channel.DMChannel):
await self.handle_DM(message)
if message.content[0] == "/":
if message.content.split(" ")[0].lower() == "/rank":
await self.rank_command(message)
async def rank_command(self, message):
if len(message.content.split(" ")) < 2:
await message.channel.send(
message.author.mention + "/rank takes 2 or 3 arguments. Do '/rank ?' for help.")
try:
if message.content.split(" ")[1] == "?":
await self.help("rank", message)
return
except:
pass
try:
if message.content.split(" ")[1] == "top":
await self.top_rank_command(message)
return
except:
pass
async def top_rank_command(message):
print("Top rank entered")
_user = await client.fetch_user(372746847393021953) #my id: Cluebo#2312
print(_user)
print("Top rank end")
执行此操作,它只会打印"Top rank entered"
而不会打印user
或"Top rank end"
但是,我没有收到错误消息。 该方法就停在那里(机器人在 Heroku 上运行)。 提前致谢!
有两种方法可以从 id 中获取用户:
Client.fetch_user(id)
(或Bot.fetch_user(id)
) → 返回一个discord.User
对象Guild.fetch_member(id)
→ 返回一个discord.Member
对象以下是一些示例(同时使用Client
和Bot
):
#Get a discord.User object
@client.event
async def on_message(message):
content = message.content[6:]
if message.content.startswith('!find'):
user = await client.fetch_user(int(content))
print(user)
else:
pass
@bot.command()
async def find(ctx, id: int):
user = await bot.fetch_user(id)
print(user)
#Get a discord.Member object
@client.event
async def on_message(message):
content = message.content[6:]
if message.content.startswith('!find'):
member = await message.guild.fetch_member(int(content))
print(member)
else:
pass
@bot.command()
async def find(ctx, id: int):
member = await ctx.guild.fetch_member(id)
print(member)
有了这些例子,你只需要在 discord 中写!find [id]
,它就会打印它在你的终端中获取的对象
client.fetch_user(id(int)) 是一个协程。 这意味着我需要添加一个await
,所以它需要是_user = await client.fetch_user(id)
。 确保 id 正确,因为脚本可能会在没有错误的情况下停止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.