public async Task RemoveStickerPackAsync(Admin currentAdmin, Guid stickerPackId)
        {
            var stickerPack = await GetStickerPackAsync(stickerPackId);

            StickerPackException.AssertOwnStickerPack(currentAdmin, stickerPack);

            await _stickerPackRepository.RemoveAsync(stickerPack);
        }
        public async Task <StickerPackOutput> CreateStickerPackAsync(Admin currentAdmin, StickerPackInput input)
        {
            if (!await _tgBot.IsStickerPackExistsAsync(input.Name))
            {
                throw StickerPackException.StickerPackDoesNotExists(input.Name);
            }

            var stickerPack = currentAdmin.AddNewStickerPack(input.Name, input.Alias, await FindTagsAsync(input.TagIds));

            var stickers = await _tgBot.GetStickerFilesFromPackAsync(stickerPack.Name);

            var filePath = await _tgBot.GetFilePathAsync(stickerPack.Name, fileId : stickers.First());

            return(new StickerPackOutput(stickerPack, filePath, stickers.Count()));
        }
        public async Task <StickerPackOutput> UpdateStickerPackAsync(Admin currentAdmin, Guid stickerPackId, StickerPackInput input)
        {
            var stickerPack = await GetStickerPackAsync(stickerPackId);

            StickerPackException.AssertOwnStickerPack(currentAdmin, stickerPack);

            if (!await _tgBot.IsStickerPackExistsAsync(input.Name))
            {
                throw StickerPackException.StickerPackDoesNotExists(input.Name);
            }

            stickerPack.Name  = input.Name;
            stickerPack.Alias = input.Alias;
            stickerPack.ReplaceTags(await FindTagsAsync(input.TagIds));

            var stickers = await _tgBot.GetStickerFilesFromPackAsync(stickerPack.Name);

            var filePath = await _tgBot.GetFilePathAsync(stickerPack.Name, fileId : stickers.First());

            return(new StickerPackOutput(stickerPack, filePath, stickers.Count()));
        }