对头像命令有更好的解决方案吗? -- 不和谐.py

时间:2021-02-12 01:24:59

标签: python discord discord.py

我已经创建了一个有效的 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 找到。我也没有在找任何人为我写它,一个例子或一个链接也很好

1 个答案:

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