“在 options.0.options.1.name 中:命令名称无效”但没有任何迹象表明确实有问题

问题描述 投票:0回答:1

我目前面临的问题是处理 nextcord 中的命令名称。 (或者看起来是这样) 错误代码如下:

Ignoring exception in on_guild_available
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\nextcord\client.py", line 497, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\nextcord\client.py", line 2567, in on_guild_available
    await self.sync_application_commands(
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\nextcord\client.py", line 2350, in sync_application_commands       
    await self._connection.sync_application_commands(
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\nextcord\state.py", line 802, in sync_application_commands
    await self.register_new_application_commands(data=data, guild_id=guild_id)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\nextcord\state.py", line 1003, in register_new_application_commands
    await self.register_application_command(app_cmd, guild_id)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\nextcord\state.py", line 1038, in register_application_command     
    raise e
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\nextcord\state.py", line 1030, in register_application_command
    raw_response = await self.http.upsert_guild_command(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\nextcord\http.py", line 399, in request
    raise HTTPException(response, data)
nextcord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In options.0.options.1.name: Command name is invalid

当您在

^[\w-]{1,32}$
正则表达式中错误地放置了错误字符时,通常会发生此错误(请注意,我不知道正则表达式是什么或如何正确阅读它,所以我只是在 这篇文章中说的)。所以一切都应该有效。

标记问题的代码:

# modlink (link/unlink/purgeall)
@client.slash_command(guild_ids=serverids,description="Link/Unlink mods ids from the reports section. (Manager Only)")
async def mod(interaction: Interaction):
    pass
@mod.subcommand(description="Links/Adds their mod in-game id's to their discord UserID. (Manager Only)")
async def add(interaction: Interaction, target: nextcord.User, ingameID: str):
    if check_manager(interaction.user.id) == True:
        print("test")
    else:
        await interaction.response.send_message(f"{interaction.user.mention}",embed=prefabembeds.NoManagerPerms)
        print(f"~$- log: (failed) modlink add (target: [{target}, {target.id}], ingameID: {ingameID}), user: [{interaction.user.id}, {interaction.user}]")

如有帮助,我们将不胜感激。 (即使我错过了最微小的拼写错误)

我尝试通过“@client.slash_command()”和“mod.subcommand()”内部的参数重命名命令,并且也只是通过函数“async def mod(...”和“async”重命名它def 添加(..."

python discord nextcord
1个回答
0
投票

经过更多的尝试和错误。我发现为什么这行不通。

命令参数也需要小写。

在我的代码中

async def add(interaction: Interaction, target: nextcord.User, ingameID: str):
                                                               ^^^^^^^^

命令参数名称也必须遵循正则表达式模式

^[\w-]{1,32}$
,否则会导致与命令名称相同的问题。

再见。

© www.soinside.com 2019 - 2024. All rights reserved.