属性错误:"成员"对象没有属性"avatar_url"



我正在尝试制作一个不和谐机器人,其中一个功能是使用on_member_join欢迎我的机器人。这是事件:

@bot.event
async def on_member_join(member, self):
    embed = discord.Embed(colour=discord.Colour(0x95efcc), description=f"Welcome to Rebellions server! You are the{len(list(member.guild.members))}th member!")
    embed.set_thumbnail(url=f"{member.avatar_url}")
    embed.set_author(name=f"{member.name}", icon_url=f"{member.avatar_url}")
    embed.set_footer(text=f"{member.guild}", icon_url=f"{member.guild.icon_url}")
    embed.timestamp = datetime.datetime.utcnow()
    await welcome_channel.send(embed=embed)

虽然当机器人正在工作和运行,有人加入我的服务器,我得到这个错误:

[2022-11-07 19:38:10] [ERROR   ] discord.client: Ignoring exception in on_member_join
Traceback (most recent call last):
  File "C:UserssteneAppDataLocalProgramsPythonPython311Libsite-packagesdiscordclient.py", line 409, in _run_event
    await coro(*args, **kwargs)
  File "C:UserssteneOneDriveDocumentsGitHubbotmain.py", line 25, in on_member_join
    embed.set_thumbnail(url=f"{member.avatar_url}")
                               ^^^^^^^^^^^^^^^^^
AttributeError: 'Member' object has no attribute 'avatar_url'

我正在运行最新版本的discord.py和python。谢谢!欢迎齿轮:

import discord
from discord.ext import commands
import asyncio
import datetime

class WelcomeCog(commands.Cog, name="Welcome"):
    def __init__(self, bot):
        self.bot = bot

    @commands.Cog.listener()
    async def on_member_join(self, member):
        embed = discord.Embed(colour=discord.Colour(0x95efcc), description=f"Welcome to Rebellions server! You are the{len(list(member.guild.members))}th member!")
        embed.set_thumbnail(url=member.avatar.url)
        embed.set_author(name=member.name, icon_url=member.avatar.url)
        embed.set_footer(text=member.guild)
        embed.timestamp = datetime.datetime.utcnow()
        channel = self.bot.get_channel(1038893507961692290)
        await channel.send(embed=embed)

async def setup(bot):
    await bot.add_cog(WelcomeCog(bot))
    print("Welcome cog has been loaded successfully!")

在discord.py 2.0中,属性Member.avatar_url被移除并被Member.avatar取代。要访问URL,您应该使用member.avatar.url

查看类似实例的迁移指南。使用pip freeze,您可以检查安装了哪个版本的discord.py,但我假设它是2。您可能遵循了教程或复制了使用discord.py 1.x的代码示例。

您的代码后面有几个错误,可以在以下代码中纠正:

第一:async def on_member_join(member, self):是一个错误的代码。

如果此事件在cog文件中,则 self总是出现在任何其他参数之前,但它仍然不是必需的参数,因此完全删除它。这一行的正确代码是async def on_member_join(member):

第二:确保您正在使用正确的事件侦听器。

@client.event@bot.event如果这是在你的主文件,@commands.Cog.listener()如果这是在你的齿轮文件。

第三:请将(member, self):更改为(member:discord.Member)

祝你好运!: D

最新更新