【问题标题】:discord.py | Making a mute command, can't get member name不和谐.py |发出静音命令,无法获取成员名称
【发布时间】:2019-07-08 23:05:10
【问题描述】:

我正在为我的新 discord 机器人设置静音命令,我对 discord.py 的东西还很陌生,不明白出了什么问题。 我不断收到未指定成员的错误,但显然是。

我在 youtube 等上尝试了很多教程,但它总是略过一两个细节,所以我无法完全弄清楚。如果有人可以更正我的代码,我将不胜感激,因为我仍在学习 discord.py。

@client.command()
async def mute(context, member: discord.Member=None):
    if not member:
        await client.say('Please specify a member')
        return
    role = get(member.server.roles, name="Muted")
    await client.add_roles(member, role)
    await client.say('{member.mention} was muted.')

它只是应该将静音角色添加到某人,然后完成它。在使用我的禁止和踢命令时,我在指定成员时也遇到了同样的问题,它们以相同的方式完成。

我愿意接受所有建议,谢谢!

【问题讨论】:

  • 您是否看到异常或收到“请指定...”消息?你是如何调用这个的?如果您遇到异常,能否分享异常的全文?
  • 我的 shell 中没有出现任何错误,而是机器人要求我指定一个成员,正如我的代码第 4 行所说的那样。老实说,这让我感到困惑

标签: python python-3.x discord.py


【解决方案1】:

您需要将装饰器更改为@client.command(pass_context=True)。成员名称被分配给context,而member 采用默认值。

@client.command(pass_context=True)
async def mute(context, member: discord.Member=None):
    if not member:
        await client.say('Please specify a member')
        return
    role = get(member.server.roles, name="Muted")
    await client.add_roles(member, role)
    await client.say(f'{member.mention} was muted.')  # You forgot the f

另外,我可能只是让转换失败然后处理错误:

@client.command(pass_context=True)
async def mute(ctx, member: discord.Member):
    role = get(member.server.roles, name="Muted")
    await client.add_roles(member, role)
    await client.say(f'{member.mention} was muted.')

@mute.error:
async def mute_error(error, ctx):
    if isinstance(error, ConversionError):
        await client.send_message(ctx.message.channel, 'Please specify a member')
    else:
        raise error

【讨论】:

  • 我知道最初的问题是在旧版本中,但是您是否可以使它与我现在正在使用的重写兼容。谢谢!
  • @xupaii 你应该尝试自己做,这样你才能理解你的代码在做什么。一些注意事项:server -> guild, client.add_roles -> member.add_roles, say and send_message -> ctx.send。如果您使用错误处理程序,(error, ctx) 已更改为 (ctx, error)
  • 好的,我将所有内容都更改为重写,但出现错误:Command raised an exception: NameError: name 'get' is not defined。不太清楚该怎么做。
  • get 来自discord.utils。就import吧。
  • 我已经导入,仍然收到get is not defined 错误。很抱歉打扰了
猜你喜欢
  • 1970-01-01
  • 2020-07-13
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 2021-09-27
相关资源
最近更新 更多