Уберите аргумент "slash_command:aliases = ["cube"]" из списка аргументов.
В слэш-командах необходимо указать параметр "inter" для взаимодействия с командой. Примерно так: "async def cube(self, inter: disnake.AppCmdInter, bet: int = commands.Param(le=1))".
Если вы используете объект эмбеда, убедитесь, что вы его отправляете. Если не отправите, возникнет ошибка.
Используйте выражение "return", чтобы избежать излишнего использования условных операторов if, elif и else.
Избегайте повторения кода. Если вы используете один и тот же фрагмент кода несколько раз, лучше его вынести в отдельную функцию или переменную.
В слэш-командах используйте параметр "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:
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) # Отправляем конечный эмбед