我已经创建了一个有效的 avatar 命令,但它不适用于大型服务器中的用户 ID。
这是我当前的代码:
<img id="dynamicImg" src="https://cdn2.hubpot.net/hubf/45645/asset-diecu/sampleImage/67_a.png"/>
这有效,但我想知道是否有更好的方法来做到这一点,使用 @bot.command(brief='dev',usage="test", description="a testing command")
async def test(ctx, user):
x = user.isdigit()
if x:
user = await bot.fetch_user(user)
print(user.name)
print(user.avatar_url)
else:
user = user.replace('<@!','')
user = user.replace('>','')
print(user)
user = await bot.fetch_user(user)
print(user.name)
print(user.avatar_url)
不是一种选择,因为它无法通过 id 找到。我也没有在找任何人为我写它,一个例子或一个链接也很好
答案 0 :(得分:0)
首先,使用 user: discord.User
不起作用,因为您正试图从已经 discord.User
的对象中获取 discord.User
对象。虽然我建议您使用discord.Member
,因为这样可以确保它属于当前公会,因此您可以获取他的头像。
然后,使用 user: discord.Member
您就不需要那些丑陋的 user.replace('<@!','')
语句,这些语句可能会导致您的函数对某些用户不起作用。
我还建议您以后不要使用 bot.fetch_user
,因为这是一个直接的 API 调用,并且有比这样做更好的方法,例如 bot.get_user
。
你的功能可以这么简单,它应该适用于任何公会:
@bot.command(brief='dev',usage="test", description="a testing command")
async def test(ctx, user : discord.Member=None):
if user:
print(user.name)
print(user.avatar_url)