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

Почему когда загружаю коги через команду они не работают(слеш команды) nextcord?

почему когда загружаю команды так:
initial_extantions = []
for filename in os.listdir("./cogs"):
    if filename.endswith(".py"):
        initial_extantions.append("cogs." + filename[:-3])

if __name__ == "__main__":
    for extention in initial_extantions:
        bot.load_extension(extention)
        print(f'loaded {extention}')

Они работают, если загружаю через команду, загружаются только не слеш команды, а для того чтобы работали слеш команды нужно дописывать await bot.sync_all_application_commands():
@bot.command()
async def load(ctx):
    initial_extantions = []
    for filename in os.listdir("./cogs"):
        if filename.endswith(".py"):
            bot.load_extension("cogs." + filename[:-3])
            await ctx.send(f"loaded {filename}")  # Команда не загружает слеш команды, они не показываются

Вопрос в том, почему не команде не требуется bot.sync_all_application_commands(), а команде требуется.
  • Вопрос задан
  • 63 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Слеш команды полностью отличаются от префиксных.
Если префиксные запустил бота и они работают, то в случае со слешами они синхронизируются на стороне серверов дискорда и до этого момента они не работают. Соответственно для синхронизации команд есть функции sync_application_commands, sync_all_application_commands, discover_application_commands и еще несколько.

Для того чтобы можно было тестировать их можно дополнительно передавать в команду guild_ids=[TESTING_GUILD_ID], но и в этом случае команды нужно синхронизировать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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