По ошибке:
Убираем из аргументов
slash_command:
aliases = ["cube"]
В слэш-командах отсутствует данный параметр, поэтому он не может быть применён.
Так-же отсутсвует ответ на взаимодействие с интеракцией. Вы создали объект эмбеда, присвоили ему картинку, но не отправили, поэтому и возникает ошибка.
По чистоте и логике кода:
Так-же рекомендую ознакомиться с выражением return, так как подобный код состоящий из if, elif и else это ужасно.
Помимо этого, следует следить за тем, что бы части кода не повторялись, так например:
embed = disnake.Embed(title=f"Выпало число: {cube}, Вы проиграли/выйграли - {st}")
Используется 6 раз, вместо возможных двух.
Дополнительно, в слэш-командах используется параметр inter, вместо ctx для контекстных(префиксных) команд.
А что до логики, так получение выпавшего номера, до получения баланса из базы данных в которой возможна ошибка недостаточных средств не корректна.
Для примера, сделаю ваш код чистым, в адекватном формате он будет выглядеть так:
@commands.slash_command(name="куб", description="Крутить кубы!")
async def cube(self, inter: disnake.AppCmdInter, bet: int = commands.Param(le=1)):
number = random.randint(1, 6) # Получаем номер кубика
balance = await self.db.get_data(inter.author) # Получаем баланса пользователя
if bet > balance["balance"]: # Если ставка больше баланса пользователя
await inter.send("У вас недостаточно средств!") # Отправлять ошибку
return # Прекращать код
if number % 2 == 0: # Если остаток от деления на 2 равен нулю
await self.db.update_member("UPDATE users SET balance = balance + ? WHERE member_id = ? AND guild_id = ?", [bet, inter.author.id, inter.guild.id]) # Добавляь деньги
embed = disnake.Embed(title=f"Выпало число: {number}, Вы выиграли - {bet}") # Создаём обьект эмбеда
match number: # Вычисляем номер
case 2: # Если равен 2, то:
embed.set_image(url="https://i.ibb.co/MPqggKK/2.gif") # Присваиваем картинку
case 4:
embed.set_image(url="https://i.ibb.co/SVMrN7J/4.gif")
case 6:
embed.set_image(url="https://i.ibb.co/C9rx51j/6.gif")
else:
await self.db.update_member("UPDATE users SET balance = balance - ? WHERE member_id = ? AND guild_id = ?", [bet, inter.author.id, inter.guild.id]) # Забрать деньги
embed = disnake.Embed(title=f"Выпало число: {number}, Вы проиграли - {bet}")
match number:
case 1:
embed.set_image(url="https://i.ibb.co/g7JDfTN/1.gif")
case 3:
embed.set_image(url="https://i.ibb.co/Qp2ChF9/3.gif")
case 5:
embed.set_image(url="https://i.ibb.co/VLkjhyt/5.gif")
await inter.response.send_message(embed=embed) # Отправляем конечный эмбед