python - 我将如何修复 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)
我将如何解决此错误?
解决方案
正如您的错误所暗示的那样,您有一个Guild
, not的实例Context
。查看API 文档还可以:
参数: guild (Guild) – 加入的公会。
这意味着on_guild_join
没有得到ctx
,它得到一个Guild
(你刚加入的公会)。要“解决此问题”,请删除.guild
,您已经拥有 guild。
推荐阅读
- sorting - 如何优化 Google Sheet 的排序/时间戳脚本
- javascript - 从 php 跟踪 Facebook 链接共享
- python - 从特定长度的文本字符串中仅提取字母数字标记并在python中仅否定字母或仅数字
- ruby-on-rails - HTML 标签的验证问题
- powershell - Powershell清除终端获取内容?
- regex - 替换与python 2.7中的模式匹配的字符串的某个部分并保存在同一个文件中
- r - 编写一个更快的函数来找到 R 中 3x3 矩阵的逆
- javascript - 使用 useMediaQuery 钩子切换浅色/深色主题时,Material-ui 样式被覆盖
- c# - FluentValidation - 验证器包装器
- java - 为什么手动压缩PDF中的图像流后图像会失真?