我目前面临的问题是处理 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 添加(..."
经过更多的尝试和错误。我发现为什么这行不通。
命令参数也需要小写。
在我的代码中
async def add(interaction: Interaction, target: nextcord.User, ingameID: str):
^^^^^^^^
命令参数名称也必须遵循正则表达式模式
^[\w-]{1,32}$
,否则会导致与命令名称相同的问题。
再见。