如何在discord.py中创建故障单命令?

时间:2020-09-06 12:17:12

标签: discord.py

您好,所以我想制作一个可以创建票证的discord机器人,但是我不确定我如何使用discord.py,而且我想知道是否有人可以提供帮助?我已经尝试过了。

@bot.command()
async def ticket(ctx):
    await create_text_channel(name, *, overwrites=None, reason=None, **options)

但是它什么也不做,我得到这个错误。

Traceback (most recent call last):
  File "C:\Users\Robin\AppData\Roaming\Python\Python37\site-packages\discord\ext\commands\bot.py", line 903, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\Robin\AppData\Roaming\Python\Python37\site-packages\discord\ext\commands\core.py", line 855, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\Robin\AppData\Roaming\Python\Python37\site-packages\discord\ext\commands\core.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NameError: name 'create_text_channel' is not defined```

1 个答案:

答案 0 :(得分:1)

您提供的代码中存在三个错误:

  • create_text_channel()discord.Guild类方法,因此它仅适用于Guild实例
  • 未定义name变量,因此会出现错误。
  • 如果您不需要任何覆盖或任何理由,则无需编写overwrites=Nonereason=None*也是如此。

最后,您的代码将如下所示:

@bot.command()
async def ticket(ctx):
    await ctx.guild.create_text_channel('Channel Name')

我想您看了文档并复制粘贴了该方法的标题,这是不必要的,您可以看一下给出的示例。 channel = await guild.create_text_channel('cool-channel')

如果您想创建一个隐藏的频道,还有以下示例:

overwrites = {
    guild.default_role: discord.PermissionOverwrite(read_messages=False),
    guild.me: discord.PermissionOverwrite(read_messages=True)
}

channel = await guild.create_text_channel('secret', overwrites=overwrites)