Почему при создании опции в SlashCommands выдает ошибки
import sqlite3
import discord
from discord.ext import commands
from discord_slash.utils.manage_commands import create_option
from settings import *
@slash.slash(name="First options", description="Первая сделаная опция мною",
options=[
{
'name': 'text',
'description': 'Введи какой угодно текст',
'required': True,
'type': 3 # str 3, int 4, user 6, role 8
},
])
async def _first(ctx, SlashContext, text):
await ctx.send(embed=discord.Embed(title=f"Я знаю что ты написал: {text}",
colour=colors['green']))
@slash.slash(name="test",
description="This is just a test command, nothing more.",
options=[
create_option(
name="optone",
description="This is the first option we have.",
option_type=3,
required=False
)
])
async def test(ctx, optone: str):
await ctx.send(content=f"I got you, you said {optone}!")
При запуске бота выскакивают ошибки, которые не позволяют запускать эти команды. Ошибки выглядят так:
Task exception was never retrieved
future: <Task finished name='Task-1' coro=<SlashCommand.sync_all_commands() done, defined at
C:\Users\User\Desktop\Testovi boti\venv\lib\site-packages\discord_slash\client.py:415>
exception=HTTPException('400 Bad Request (error code: 50035): Invalid Form Body\nIn name:
String value did not match validation regex.')>
Traceback (most recent call last):
File "C:\Users\User\Desktop\Testovi boti\venv\lib\site-packages\discord_slash\client.py", line
491, in sync_all_commands
raise ex
File "C:\Users\User\Desktop\Testovi boti\venv\lib\site-packages\discord_slash\client.py", line
471, in sync_all_commands
existing_cmds = await self.req.put_slash_commands(
File "C:\Users\User\Desktop\Testovi boti\venv\lib\site-packages\discord\http.py", line 254, in
request
raise HTTPException(r, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In name: String value did not match validation regex.
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
В тексте ошибки
discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In name: String value did not match validation regex.
есть небольшая подсказка - In name, что указывает нам на то, что ошибка где-то в имени. Возможно в имени слеш-команды или в названии функции для слеш-команды.
Если изучить ошибку дальше, можно понять, что работе мешает пробел в названии вашей слеш-команды.
Достаточно его убрать и все запустится :)
# ошибка
name="First options"
# нет ошибки
name="First_options"