Python 你是如何从discord.py中获得用户头像的?
我为我的机器人做了一个头像命令,但它不能与mentioions一起工作,我试图不使用'@client.command',因为它会给代码的其余部分带来问题Python 你是如何从discord.py中获得用户头像的?,python,discord,discord.py,Python,Discord,Discord.py,我为我的机器人做了一个头像命令,但它不能与mentioions一起工作,我试图不使用'@client.command',因为它会给代码的其余部分带来问题 if message.content.startswith('+avatar'): sender = message.author name = sender.display_name avatar_url = sender.avatar_url embedVar = dis
if message.content.startswith('+avatar'):
sender = message.author
name = sender.display_name
avatar_url = sender.avatar_url
embedVar = discord.Embed(title="**{}**".format(sender), description="Username: {}".format(name), color=0xec9e36)
embedVar.set_image(url = avatar_url)
await message.channel.send(embed=embedVar)
是我写的,我找不到任何方法让它工作,任何类型的帮助将不胜感激 我猜你是想做类似的事情
+avatar@提及
提及基本上是一个包含用户ID的字符串标记
重新导入
def是指:
''检查该字符串是否为不一致的有效'提及'字符串''
尝试:
返回布尔值(重新匹配(r'',s))
除例外情况外:
一无所获
def向您提及您的id:
''从提及中提取用户id''
如果提及:
返回int(关于sub(r'[!@','',s))
一无所获
您可以首先使用title\u str=message.content.split()[1]
提取提及字符串,然后调用title\u to\u id
函数从提及字符串中提取id
之后,在您的bot(客户端)对象上调用get\u user
以获取用户,这将返回一个user
对象,该对象具有avatar\u url
字段
总之,
if message.content.startswith(“+avatar”):
message\u parts=message.content.split()
如果len(信息部分)>1:
提及\u str=message.content.split()[1]
如果提及(提及):
user=client.get\u user(向\u id提及\u(提及\u str)
#使用user.avatar\u url执行任何操作
其他:
#警告无效提及
其他:
#你想做什么就做什么
参考资料:
获取用户
:用户
:我使用了
message.indications
来查找消息中是否提到了某个人,如果提到了,我获取了提到的用户的姓名和化身url,否则我获取了发件人的姓名和化身url
您使用的是什么类型的客户端?discord.client
或commands.Bot
?discord.client
@12944qwerty您不使用commands.Bot
和commands版本的原因是什么?dpy的重写版本使命令变得非常简单。
if message.content.startswith('+avatar'):
if( len(message.mentions) > 0 ): #checking if someone is mentioned
#mesage.mentions[0] is the first mentioned user in the message
name = message.mentions[0].display_name
avatar_url = message.mentions[0].avatar_url
else: #no one is mentioned
name = sender.display_name
avatar_url = sender.avatar_url
embedVar = discord.Embed(title="Username: {}".format(name), color=0xec9e36)
embedVar.set_image(url = avatar_url)
await message.channel.send(embed=embedVar)