首页 > 解决方案 > 我将如何修复 AttributeError:'Guild' 对象在 on_guild_join 函数中没有属性 'guild' | 不和谐.py

问题描述

当机器人加入服务器时,我希望它创建角色、类别、频道。但它给了我这个。它是用齿轮写的

它给了我这个错误

Ignoring exception in on_guild_join
Traceback (most recent call last):
  File "C:\Users\Jerry\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "c:\Users\Jerry\Documents\Dump-Bot\cogs\welcome.py", line 12, in on_guild_join
    guild = ctx.guild
AttributeError: 'Guild' object has no attribute 'guild'

代码:

    @commands.Cog.listener()
    async def on_guild_join(self, ctx):
        guild = ctx.guild
        await ctx.guild.create_role(name="Muted")
        Muted_role = discord.utils.get(member.guild.roles, name="Muted")
        await ctx.Muted_role.set_permissions(send_messages=False)
        verify_role = discord.utils.get(member.guild.roles, name="Member")
        await ctx.verify_role.set_permissions(send_messages=True)
        ticket_category = discord.utils.get(guild.categories, name="Tickets") 

        if ticket_category is None: 
            await guild.create_category_channel(name="Tickets")

        await ctx.guild.create_text_channel(name="welcome")

        guild_join_embed = discord.Embed(title="Thanks for adding me")
        guild_join_embed.add_field(name="Thanks for adding me!", value="It helps alot. I will provide my best support", inline=True)
        guild_join_embed.set_footer(text=f"Right now I am in {len(client.guilds)} guilds/servers")
        await ctx.send(embed=guild_join_embed)
        await ctx.guild.create_voice_channel(name=f"Total Member Count: {guild.member_count}")
        await ctx.guild.create_voice_channel(name=f"Boost Count: {guild.premium_subscription_count}")
        await ctx.guild.create_voice_channel(name=f"Ticket Count: {ticket_category.children.size}") 
        member_count_vc = discord.utils.get(guild.channel, name=f"Total Member Count: {guild.member_count}", category=None)
        server_boost_count_vc = discord.utils.get(guild.channel, name=f"Boost Count: {guild.premium_subscription_count}", category=None)
        ticket_count_vc = discord.utils.get(guild.channel, name=f"Ticket Count: {ticket_category.children.size}", category=None)
        await ctx.member_count_vc.set_permissions(ctx.guild.verify_role, connect=False)
        await ctx.server_boost_count_vc.set_permissions(ctx.guild.verify_role, connect=False)

我将如何解决此错误?

标签: pythondiscorddiscord.py

解决方案


正如您的错误所暗示的那样,您有一个Guild, not的实例Context。查看API 文档还可以:

参数: guild (Guild) – 加入的公会。

这意味着on_guild_join没有得到ctx,它得到一个Guild(你刚加入的公会)。要“解决此问题”,请删除.guild您已经拥有 guild


推荐阅读