Задать вопрос
WellandDev
@WellandDev

Disnake | Синхронизация команд |?

При добавлении/изменении слеш команд, выводится ошибка:
/home/container/.local/lib/python3.12/site-packages/disnake/ext/commands/interaction_bot_base.py:826: SyncWarning: Failed to overwrite global commands due to 400 Bad Request (error code: 50240): You cannot remove this app's Entry Point command in a b ulk update operation. Please include the Entry Point command in your update request or delete it separately. warnings.warn(


И слеш команды не изменяются.

Код:
import disnake
from disnake.ext import commands
import json
import os
import config

bot = commands.Bot(command_prefix=commands.when_mentioned, intents=disnake.Intents.all(), reload=True)
bot.remove_command('help')

def load_data():
    if os.path.exists('db.json'):
        try:
            with open('db.json', 'r') as file:
                return json.load(file)
        except (json.JSONDecodeError, FileNotFoundError):
            print("Ошибка при загрузке базы данных!")
    else:
        print("db.json не найден!")
    return {}

def save_data(data):
    with open('db.json', 'w') as file:
        json.dump(data, file)

data = load_data()

def get_language(user_id):
    return data.get(user_id, {}).get("language", "ru")

@bot.event
async def on_ready():
    print(f"Имя: {bot.user} ({bot.user.id})\nСерверов: {len(bot.guilds)}\nПригласить: https://discord.com/oauth2/authorize?client_id=1281875008372605010&permissions=277025401920&scope=bot%20applications.commands{bot.user.id}&permissions=277025401920&scope=bot%20applications.commands\nСоздан в: {bot.user.created_at:%d.%m.%Y, %H:%M}\nПинг: {bot.latency * 1000:.0f}ms")
    await bot.change_presence(status=disnake.Status.online, activity=disnake.Activity(type=disnake.ActivityType.custom, name=config.textstatus, state=config.textstatus, emoji=None))
    channel = bot.get_channel(1284407104957972541)
    if channel:
        embed = disnake.Embed(title="Бот запущен!", description="Бот успешно запущен и готов к работе.", color=config.main_color)
        await channel.send(embed=embed)

@bot.event
async def on_guild_join(guild):
    invite_link = await guild.text_channels.create_invite(max_age=0)
    channel = bot.get_channel(1284407104957972541)
    if channel:
        embed = disnake.Embed(title='Новый сервер', description=f'''Название: `{guild.name}`
ID: `{guild.id}`
Инвайт: {invite_link}
Количество участников: `{guild.member_count}`
Владелец: `{guild.owner}`
ID владельца: `{guild.owner.id}`''', color=config.main_color)
        await channel.send(embed=embed)
        embed = disnake.Embed(color=config.main_color, title="<:icons_shine1:1204041366087278638> | Хай!")
        embed.description = f"Спасибо, что добавил меня сюда!\nЧто-бы начать кликать, пропишите </clicker:1247577560863342592>\nПоменять язык можно по команде </language:1248173561491886152>"
        embed1 = disnake.Embed(color=config.main_color, title="<:icons_shine1:1204041366087278638> | Hi!")
        embed1.description = f"Thank you for adding me!\nTo start , type <1247577560863342592>\nYou can change the language using the </language:1248173561491886152> command"
        await channel.send(embeds=[embed, embed1])

@bot.event
async def on_guild_remove(guild):
    channel = bot.get_channel(1284407104957972541)
    if channel:
        lb = disnake.Embed(title=" | К сожалению, этому серверу бот не понравился", color=config.warning_color)
        lb.description = f'''
**Название сервера:** {guild.name}
**Владелец:** {guild.owner}
**Количество участников:** {guild.member_count}
**ID:** {guild.id}
    '''
        if guild.icon:
            lb.set_thumbnail(url=guild.icon.url)
        await channel.send(embed=lb)

for filename in os.listdir("./cogs"):
    if filename.endswith(".py"):
        bot.load_extension(f"cogs.{filename[:-3]}")

bot.run(config.tokenbot)
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой 9 комментариев
Решения вопроса 1
при массовом обновлении слеш-команд нельзя удалить "Entry Point command". Чтобы исправить это: попробуй добавить эту команду в список тех, что ты обновляешь, а если не нужно — удали её вручную до массового обновления
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы