【问题标题】:Discord.py mute command error AttributeErrorDiscord.py 静音命令错误 AttributeError
【发布时间】:2020-10-16 01:50:28
【问题描述】:

我的代码如下:

#Mute Command
@bot.command(pass_context = True)
async def mute(ctx, member: discord.Member):
    if ctx.message.author.server_permissions.administrator or ctx.message.author.id == '585578670207401984':
        role = discord.utils.get(member.server.roles, name='Muted')
        await ctx.add_roles(member, role)
        await ctx.send("User {0} was muted by {1}!")
    else:
        await ctx.send("You do not have permission to mute this member.")

但是,当我使用该命令时,我得到了这个错误:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Member' object has no attribute 'server_permissions'

有人可以帮忙吗?

【问题讨论】:

标签: python discord discord.py


【解决方案1】:

你的代码中有几个错误,属性错误。

  • Member 对象没有属性server_permissions,但它有guild_permissions

  • 成员id不能和字符串比较,需要和整数比较。

  • Member 对象没有属性 server 。您需要将member.server.roles 更改为member.guild.roles

  • 你不能用ctx.add_roles添加角色,你需要member.add_roles

  • await ctx.send("User {0} was muted by {1}!") 行,您没有格式化变量,所以它只会将User {0} was muted by {1}! 发送到聊天室。您可以通过 await ctx.send("User {0} was muted by {1}!".format(member.mention, message.author.mention)) 对其进行格式化。

您可以将代码更改为:

@bot.command(pass_context = True)
async def mute(ctx, member: discord.Member):
    if ctx.message.author.guild_permissions.administrator or ctx.message.author.id == 585578670207401984:
        role = discord.utils.get(ctx.guild.roles, name='Muted')
        await member.add_roles(role)
        await ctx.send("User {0} was muted by {1}!".format(member.mention, message.author.mention))
    else:
        await ctx.send("You do not have permission to mute this member.")

【讨论】:

  • 给我这个错误:discord.ext.commands.errors.CommandInvokeError:命令引发异常:NameError:未定义名称“消息”
  • message.author.mention改为ctx.author.mention字符串格式行。
猜你喜欢
  • 2020-10-28
  • 1970-01-01
  • 2018-06-07
  • 2021-09-02
  • 2020-06-15
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多